如何在客户端检测套接字断开?

时间:2013-11-25 20:35:12

标签: node.js socket.io

我正在使用nodejs v0.11.0-presocket.io version 0.9.11,我想在客户端检测套接字断开连接。我正在使用此代码在断开连接时发出警报,但似乎我做错了任何人都可以帮忙,谢谢

客户端:

<script src="http://127.0.0.1:4000/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script language="javascript" type="text/javascript">
  var socket = io.connect('127.0.0.1',{port:4000});
  console.log("connected");  
  socket.on('disconnect', function () {
        alert('disconnected');
    });
</script>

服务器:

var http = require('http');
var app = http.createServer().listen(4000)
,io = require('socket.io').listen(app);
io.sockets.on('connection', function (socket) {
    console.log("client has established :" + socket.id);
socket.on('disconnect', function () {
    console.log("client has disconnected :" + socket.id);
});       
});

服务器上的每一件事都可以正常工作,但客户端上的断开连接没有警报。

2 个答案:

答案 0 :(得分:3)

请执行以下操作:

<script src="/socket.io/socket.io.js"></script>

<script language="javascript" type="text/javascript">
    var socket = io.connect('127.0.0.1:8080');

    socket.on('connect', function() { console.log("connected"); });
    socket.on('disconnect', function () { console.log("disconnected"); });
</script>

并且您的侦听器端口必须与connect使用该端口相同。

答案 1 :(得分:1)

  

服务器端和/或浏览器上没有连接   侧。只有一个连接。如果其中一方将其关闭,   然后它被关闭(你不能将数据推送到一个连接   明显关闭)。 来源: https://stackoverflow.com/a/18147207/973155

然而,您可以自己从客户端关闭连接:

socket.disconnect();