当我重新启动服务器时,我看到了奇怪的输出。。你能澄清一下我为什么得到这个输出吗。通过在chrome中的开发者工具中看到网络,我发现它每次都在发出请求。我的目标是尽快测试套接字断开,这就是我设置心跳间隔和心跳超时的原因。
我的服务器端代码为===>>
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.set('heartbeat interval',10);
io.set('heartbeat timeout',25);
io.set('transports', 'xhr-polling');
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function(socket){
var currentdate = new Date();
var datetime = "Last Sync: " + currentdate.getDate() + "/"
+ (currentdate.getMonth()+1) + "/"
+ currentdate.getFullYear() + " @ "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds();
console.log("connection established...!!!" + datetime);
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
socket.on('disconnect', function(){
console.log("disconnection established...!!!");
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
并且输出为1) 。我启动了服务器2) 。客户端已连接3) 。我清除了控制台4) 。我关闭了服务器,然后重新启动。
重新启动服务器后的输出是这样的。有人能告诉我为什么会发生这种事吗。只有一个客户端有很多多重连接和断开连接。
连接已建立。。。!!!上次同步:2014年11月11日@8:11:37断开连接已建立。。。!!!连接已建立。。。!!!上次同步时间:2014年11月11日上午8:11:40断开连接已建立。。。!!!连接已建立。。。!!!上次同步:2014年11月11日@8:11:47断开连接已建立。。。!!!连接已建立。。。!!!上次同步:2014年11月11日@8:11:54断开连接已建立。。。!!!连接已建立。。。!!!上次同步:2014年11月11日@8:12:14断开连接已建立。。。!!!连接已建立。。。!!!上次同步:2014年11月11日@8:12:35断开连接已建立。。。!!!
我认为您的客户端代码有一些问题。请查看以下代码。它正在发挥作用。服务器端代码"hat.js"
var app = require('express')(),
http = require('http').Server(app),
io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('chat_message', function(msg){
console.log('message: ' + msg);
});
socket.emit("progress",90);
});
http.listen(5000, function(){
console.log('listening on *:5000');
});
客户端代码在这里index.html'
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<ul id="messages"></ul>
<input id="m" autocomplete="off" />
<button id="btn">Send</button>
<script>
var socket = io();
$('#btn').click(function(e) {
console.log('ok');
//e.preventDefault();
socket.emit('chat_message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat_message', function(msg) {
$('#messages').append($('<li>').text(msg));
});
socket.on("progress", function(val) {
console.log(val);
});
</script>
</body>
</html>