请看下面的代码。这是nodeJS中的一个简单程序。
问题是为什么不打印 disconnect
? (如果你取消注释 setTimeout
,问题就消失了)
真正的问题是什么?:为什么我不能同时启动 socketIO 客户端和服务器并在连接后立即关闭套接字?与 socketIO 连接的诀窍是什么?
"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);
});
最佳答案
您的服务器设置不正确,请改为这样做:
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();
});
关于javascript - 什么时候可以断开套接字客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31001267/