假设存在一个包含动态生成内容的网页-
例如,一个div包含当前已连接浏览器的数量。当服务器上的计数更改时,我希望所有连接的浏览器重新加载计数,以便每个人都可以看到增量/减量。
做到这一点的最佳方法是什么?
关键字:ajax,广播,浏览器,div,jquery
这是使用ajax长轮询进行服务器推送的方法。浏览器发出一个ajax请求,该请求启动服务器端自轮询。Ajax请求保持打开状态,等待响应,直到文件更改为止,并且一旦获得响应,它就会发出一个新的长轮询请求。
这是jQuery和php的外观,实现了在html中实时更新div的示例,该示例显示了当前连接的客户端数量:
index.html:
<html>
<head>
<title>Comet Test</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="longpolling.js"></script>
</head>
<body>
Number of connected users: <div id="total">0</div>
</body>
</html>
longpolling.js:
$(document).ready(function() { connectToServer(1); });
function connectToServer( incp ) {
$.get("LongPolling.php",
{ inc: incp },
function(resp) {
$('#total').html(resp);
connectToServer(0);
}
);
}
LongPolling.php:
<?php
# (over)write file with contents, locking the file while doing so.
# just barf and die if there's an error.
function update($file, $contents)
{
$f = fopen($file, 'w');
if(!$f) { echo "ERROR1"; exit; } # couldn't open file for writing.
if(!flock($f, LOCK_EX)) { echo "ERROR2"; exit; } # couldn't get lock.
fwrite($f, $contents);
fclose($f); # this also releases the lock.
return $contents;
}
# fetch the contents of the given file.
# if the file doesn't exist, create it with contents "0"
function fetch($file)
{
if(file_exists($file)) {
if(!is_readable($file)) { echo "ERROR3"; exit; }
$x = file_get_contents($file);
} else {
$x = 0;
update($file, $x);
}
return $x;
}
$fc = 'connx.txt'; # file that stores the number of connections.
if ( $_REQUEST['inc'] == 1 ) { # someone just connected.
echo update($fc, fetch($fc)+1);
} else { # someone is reconnecting (also happens immediately after connect).
$last = filemtime($fc);
do { # wait until some other instance causes $fc to change...
sleep(1);
clearstatcache(); # otherwise filemtime() results are cached!
} while(filemtime($fc) == $last);
echo fetch($fc);
}
?>
注意:这不会跟踪断开连接,因此它更像是实时跟踪浏览量的总数。
问题内容: 在Node.js中,我将websockets / ws 用于WebSocket连接。下面是客户端的代码。假设我们要连接的服务器套接字关闭了一分钟。关闭事件将触发,但是每当服务器上的套接字出现故障或错误时,重新连接到套接字的最佳方法是什么? 问题答案: 我已经成功使用https://github.com/joewalnes/reconnecting- websocket/blob/mas
问题内容: 我有一个RMI服务器和一个桌面RMI客户端。重新启动服务器时,客户端出现错误。是否可以在不重新启动客户端的情况下重新启动RMI连接? [编辑]这是堆栈跟踪: 问题答案: 服务器终止后,您将收到一个ConnectException。之后,您可以使用Naming.lookup获取新的服务器对象。
我突然遇到了硒和铬驱动的错误问题。我还没有改变一件事,但我遇到了这些错误信息。这个脚本在几个小时前就开始工作了,现在没有任何调整,它不工作了。 这是我对应的代码: 更奇怪的是,当打开新终端、加载python并从selenium import webdriver中键入时,我没有收到任何错误。但是,当我导航到脚本所在的文件夹,并从selenium import webdriver加载python和类型
我正在尝试启动selenium web浏览器,我可以打开火狐浏览器,但无法打开谷歌帮助我解决我面临的这个错误 线程“main”org.openqa.selenium.WebDriverException中的hello world异常:等待Firefox启动45秒时超时。构建信息:版本:“3.14.0”,修订版:“AACCCCE0”,时间:“2018-08-02T20:05:20.749Z”系统信息
我正在使用单节点独立zookeeper运行一个带有zookeeper发现SPI机制的单节点Apache Ignite服务器。 我正在尝试使用下面的发现SPI配置从客户端应用程序连接Ignite服务器,如下所示 请提供在zookeeper重新启动后客户端自动重新连接的配置。
(这个问题的灵感来自对此线程的响应:WebSocket 服务器如何处理多个传入的连接请求? 我的理解是这样的: 假设客户端 IP = 1.1.1.1,服务器 IP = 9.9.9.9 > 浏览器选择一个随机的本地可用端口,例如 5555,并启动与服务器端口 80 的连接。因此,在客户端上,应表示 IP 连接,例如 (1.1.1.1 服务器在其端口80上调用并识别来自客户端的连接请求。然后服务器选择