php弹幕技术轮询,PHP+Ajax实现在线聊天长轮询

HTML

首先我们放置一个获取数据按钮和数据存放地方#msg。

jQuery

我们向ajax.php请求,请求的时间设置80秒。在这80秒中若没有从服务端返回‘success’则一直保持连接状态,直到有数据返回或‘success’的值为0才关闭连接。在关闭连接后在继续下一次的请求。$(function() {

$("#btn").bind("click", {

btn: $("#btn")

},

function(evdata) {

$.ajax({

type: "POST",

dataType: "json",

url: "ajax.php",

timeout: 80000,//ajax请求超时时间80秒

data: {

time: "80"

},

//40秒后无论结果服务器都返回数据

success: function(data, textStatus) {

//从服务器得到数据,显示数据并继续查询

if (data.success == "1") {

$("#msg").append("
[有数据]" + data.text);

evdata.data.btn.click();

}

//未从服务器得到数据,继续查询

if (data.success == "0") {

$("#msg").append("
[无数据]");

evdata.data.btn.click();

}

},

//Ajax请求超时,继续查询

error: function(XMLHttpRequest, textStatus, errorThrown) {

if (textStatus == "timeout") {

$("#msg").append("
[超时]");

evdata.data.btn.click();

}

}

});

});

Ajax.php

通过$_POST['time']来限制循环的超时时间,避免资源过度浪费。要注意的是浏览器不关闭的话,会一直请求下去......if(empty($_POST['time']))exit();

set_time_limit(0);//无限请求超时时间

$i=0;

while (true){

//sleep(1);

usleep(500000);//0.5秒

$i++;

//若得到数据则马上返回数据给客服端,并结束本次请求

$rand=rand(1,999);

if($rand<=15){

$arr=array('success'=>"1",'name'=>'xiaocai','text'=>$rand);

echo json_encode($arr);

exit();

}

//服务器($_POST['time']*0.5)秒后告诉客服端无数据

if($i==$_POST['time']){

$arr=array('success'=>"0",'name'=>'xiaocai','text'=>$rand);

echo json_encode($arr);

exit();

}

}

大家可以利用这种长轮询(COMET)方式,做一个在线聊天系统,若是成功的话,你肯定会觉得小有成就呢!~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观

全文共1803字&#xff0c;预计学习时长10分钟图源&#xff1a;tehrantimes流行 Python 数据分析库 Pandas 中的绘图功能一直是迅速绘制图表的首选之一。但是&#xff0c;其可用的可视化效果总是十分粗略&#xff0c;实用有余、美观不足。笔者常用 Pandas 的绘图功能快速地执行一…

php 匹配关键字,php获取搜索引擎搜索关键词关键字的正则表达式实现方法

获取搜索引擎关键词&#xff0c;然后针对性的显示匹配结果&#xff0c;对于提升用户访问友好性有很大的帮助。php获取搜索引擎关键词的方法&#xff0c;网上有一些&#xff0c;但是并不全面&#xff0c;而使用正则表达式则可以简单的实现该功能。参见如下代码示例&#xff1a;h…

jquery name选择器_jquery笔记

jQuery是一个封装好的特定的集合(方法和函数)。是一个库&#xff0c;封装了很多预先定义好的函数在里面。概念jQuery是一个快速&#xff0c;简洁的js库。j是js&#xff0c;query是查询&#xff0c;把js中的DOM操作作了封装&#xff0c;我们可以快速的查询使用里面的功能。jQuer…

python数据库框架_目前最受欢迎的12个Python开源框架

1 Django Django是一款用Python语言写的免费开源的 Python Web应用开发框架&#xff0c;它遵循模型 -视图-控制器(MVC)的架构模式。它是由非营利Django维护软件基金会(DSF)和3条款BSD许可下可用&#xff0c;鼓励快速发展和实用的设计。Django同时是一款在数据库功能、后台功能、…

jenkins java常用插件下载,Jenkins简单介绍以及插件入门

Jenkins是一个广泛用于持续构建的可视化web工具&#xff0c;就是各种项目的的“自动化”编译、打包、分发部署&#xff0c;将以前编译、打包、上传、部署到Tomcat中的过程交由Jenkins&#xff0c;Jenkins通过给定的代码地址&#xff0c;将代码拉取到jenkins宿主机上&#xff0c…

linux安装python3.7的步骤_Linux 安装python3.7.3

我这里使用的是Redhat6.5&#xff0c;centos系统本身默认安装有python2.x&#xff0c;版本x根据不同版本系统有所不同&#xff0c;可通过 python --V 或 python --version 查看系统自带的python版本 有一些系统命令时需要用到python2&#xff0c;不能卸载 1、安装依赖包 1&…

php session 保存数组,php - 我用ajax设置的SESSION数组变量没有被保存?

我有一个链接&#xff0c;当点击时&#xff0c;调用jquery ajax函数从php页面获取数据&#xff0c;并将返回的html放在一个弹出式div中。返回的html实际上是一个表单。在PHP中&#xff0c;我正在查询数据库以获取与用户规格匹配的许可证列表&#xff0c;并将它们保存在一个数组…

python画三维立体图难吗_万万没想到,Python竟能绘制出如此酷炫的三维图

作者 | Jay Alammar转载自 | 高级农民工 通常我们用 Python 绘制的都是二维平面图&#xff0c;但有时也需要绘制三维场景图&#xff0c;比如像下面这样的&#xff1a;这些图怎么做出来呢&#xff1f;今天就来分享下如何一步步绘制出三维矢量&#xff08;SVG&#xff09;图。 八…

java嵌入groovy脚本,java-如何捕获传递给Groovy脚本的参数?

它与Java非常相似&#xff0c;您可以使用相同的Java语法。 例如。class TestExecutor {public static void main(def args) {println("Printing arguments");for(String arguments : args) {println (arguments);}}}运行它&#xff0c;您应该看到已打印的参数C:\User…

php人物行走,非常震撼的纯CSS3人物行走动画

今天分享给大家的是一个用纯CSS3实现的人物行走动画&#xff0c;在没有使用JavaScript的情况下&#xff0c;用CSS3技术将人物行走的姿态描绘得非常逼真。其实动画实现的原理也是比较简单的&#xff0c;将人物行走时的状态分割成多张图片&#xff0c;然后利用CSS3的动画属性将这…

python实现简易聊天需要登录_python编写简易聊天室实现局域网内聊天功能

本文实例为大家分享了python实现局域网内聊天功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 功能: 可以向局域网内开启接收信息功能的ip进行发送信息,我们可以写两段端口不同的代码来实现在一台电脑上与自己聊天. 关键点: 要想实现此功能必须将程序的端口固定…

php jquery 弹窗提示框,jQuery实现消息弹出框效果

本文实例为大家分享了jQuery消息弹出框的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下效果图实现代码.showMessage {padding: 5px 10px;border-radius: 5px;position: fixed;top: 45%;left: 45%;color: #ffffff;}.showMessageSuccess {background-color: #00B7EE;}…

python定义字符串数组_python数组声明

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; 如何在python? 我无法在文档中找到对数组的任何引用... 我正在制作一个小程序&#xff0c;在静态数组上保存…

asurerp可以导出php文件吗,编译前的准备 - PHP 扩展开发及内核应用相关内容 - UDN开源文档...

编译前的准备从一个PHP程序猿&#xff0c;到一个想为PHP开发扩展的程序猿&#xff0c;此间的进化有一步是跳不过去的&#xff0c;那就是你必须熟知如何编译PHP的源码。*nix ToolsC语言的编译器是我们使用C语言的必备工具&#xff0c;你的系统应该已经自带了一种C语言的编译器&a…

python函数定义中参数列表里的参数是_python函数定义中的参数说明

原博文 2020-05-23 07:50 − > 描述函数定义时 涉及到的 位置参数&#xff0c;默认参数&#xff0c;关键字参数&#xff0c;可变参数等的概念及用法 ## 1 示例代码#! /usr/bin/env python # -*- coding: UTF-8 -*- import logging def get_default_logger(): log... 相关推荐…

tabulate matlab,matlab中用于统计矩阵数据频率,出现次数的函数

第一种方法&#xff1a;调用MATLAB自带的函数tabulate统计一个数组中各数字(元素)出现的频数、频率【例1】统计数值型数组中各元素出现的频数、频率>> x [2 2 6 5 2 3 2 4 3 4 3 4 4 4 4 2 26 0 4 7 2 5 8 3 1 3 2 5 3 6 2 3 54 3 1 4 2 2 2 3 1 5 2 6 3 4 1 2 5];>&…

python3中map的用法_python3中map()函数用法

1.map语法&#xff1a; map() 函数语法&#xff1a;map(function, iterable, …) 简单来说&#xff0c;map()它接收一个函数 f 和一个 可迭代对象(这里理解成 list)&#xff0c;并通过把函数 f 依次作用在 list 的每个元素上&#xff0c;得到一个新的 list 并返回。 def square…

我的世界手机有PHP的开服器下载,【BDS】MC基岩版官方开服器Windows版插件开发包...

您尚未登录&#xff0c;立即登录享受更好的浏览体验&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册(register)xMC基岩版官方开服器Windows版插件开发教程2019年5月22日 作者&#xff1a;Player前言&#xff1a;MC基岩版官方开服器(BDS)自发布至…

c++ 协程_用yield实现协程

上一篇 理解python中的yield关键字 介绍了使用yeld实现生成器函数&#xff0c;这一篇我们来继续深入的了解一下yield&#xff0c;用yield实现协程。先来解答一下上一篇留下的问题&#xff1a;下面的代码为什么第二次调用next打印None呢&#xff1f;def 事实是这样的&#xff0c…

visualsvn php,VisualSVN 手动记录访问日志

VisualSVN 手动记录访问日志VisualSVN 是一个可以免费使用的&#xff0c;SVN服务器端软件&#xff0c;基于 apache 。可以实现 http https 多种SVN 发布功能。VisualSVN 默认是没有日志记录功能&#xff0c;需要手动打开。首先从apache下载&#xff0c;apache 2.2 windows 版&a…