首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >socket.io客户端连接断开连接

socket.io客户端连接断开连接
EN

Stack Overflow用户
提问于 2014-07-04 12:43:02
回答 2查看 79.5K关注 0票数 23

我不明白为什么多次断开/连接socket.io连接不起作用?

服务器端代码:

代码语言:javascript
复制
io.on('connection', function(socket){
    console.log('a user connected');
    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
});

客户端代码:

代码语言:javascript
复制
var socket = io();
socket.on('connect', function() {
    console.log("connected from the client side");
});
$('#connect_button').click(function(){
    socket.connect();
});
$('#disconnect_button').click(function(){
    socket.disconnect();
});

它完全断开了连接。但不会重新连接。我使用的是Socket.io 1.0。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-04 20:29:43

你在客户端尝试过这个配置吗?

代码语言:javascript
复制
// 0.9  socket.io version
io.connect(SERVER_IP, {'force new connection': true});

// 1.0 socket.io version
io.connect(SERVER_IP, {'forceNew': true});
票数 39
EN

Stack Overflow用户

发布于 2014-07-08 00:28:24

这个基于Jujuleder答案的解决方案是有效的。显然,在socket.io 1.0中,它是"forceNew“而不是”强制新连接“-尽管两者都有效。

服务器:

代码语言:javascript
复制
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendfile('s.html');
});

io.on('connection', function(socket){
    console.log('a user connected: ' + socket.id);
    socket.on('disconnect', function(){
        console.log( socket.name + ' has disconnected from the chat.' + socket.id);
    });
    socket.on('join', function (name) {
        socket.name = name;
        console.log(socket.name + ' joined the chat.');
    });
});

http.listen(3000, function(){
    console.log('listening on *:3000');
});

客户端(s.html):

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>button{width: 100px;}input{width: 300px;}</style>
</head>
<body>

<ul id="messages"></ul>

<button id="disconnect">disconnect</button>
<button id="connect">connect</button>

<script src="/socket.io/socket.io.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>

    var socket = io.connect('http://localhost:3000');

    $('#disconnect').click(function(){
        socket.disconnect();
    });
    $('#connect').click(function(){
//        socket.socket.reconnect();
//        socket = io.connect('http://localhost:3000',{'force new connection':true });
        socket = io.connect('http://localhost:3000',{'forceNew':true });
        socket.on('connect', function(msg){
            socket.emit('join', prompt('your name?'));
        });
    });
    socket.on('connect', function(msg){
        socket.emit('join', prompt('your name?'));
    });
    socket.on("disconnect", function(){
        console.log("client disconnected from server");
    });

</script>
</body>
</html>
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24566847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档