2015-06-23 48 views
2

请看下面的代码。这是nodeJS中的一个简单程序。 问题是为什么disconnect未打印? (如果您取消注释setTimeout,问题已消失) 真正的问题是什么?:为什么我不能一起启动socketIO客户端和服务器,并在连接后立即关闭套接字?关于so​​cketIO连接的专有技术是什么?什么时候可以断开套接字客户端

"use strict"; 
var Promise = require("bluebird"); 
var socketio = require("socket.io"); 
var socketio_client = require("socket.io-client"); 
var http = require("http"); 

var port = 7457; 
var hostandport = "http://localhost:" + port.toString(); 

var server = socketio.listen(port); 

var client = socketio_client(hostandport); 

server.sockets.on("connect", function (socket) { 
    console.log("connect"); 
    socket.on("disconnect", function() { 
     console.log("disconnect"); 
    }); 

    //setTimeout(function() { 
     client.disconnect(); 
    //}, 1000); 
}); 
+1

使用socket.disconnect(); – karthick

+0

@OP你解决了你的问题吗?我还没有看到任何回应,如“这工作”或“这没有奏效,它给了我(错误404:示例错误未找到)。” – Blubberguy22

回答

1

您已经设置了您的服务器不正确,而是执行此操作:

var server = require('http').createServer(handler); 
var io = require('socket.io')(server); 

io.on("connect", function (socket) { 
    console.log("connect"); 
    socket.on("disconnect", function() { 
     console.log("disconnect"); 
    }); 
//More importantly, you have done this part wrong, 
//the rest of your code may be functional, 
//but it does not adhere to what socket.io sets out in its own API 
//(http://socket.io/docs/) 
     socket.disconnect(); 
}); 
+0

对不起,迟到的回应,我几乎打完了这个,但我的电脑不断崩溃。 – Blubberguy22

0

在Socket.io有没有这样的事情在服务器端和/或浏览器端的连接。只有一个连接。如果其中一方关闭它,则关闭。所以,你可以从服务器使用socket.disconnect关闭()

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
    setTimeout(function() { 
    socket.disconnect(); 
    }, 1000); 
}); 

转到http://socket.io/get-started/chat/更多的澄清。

相关问题