javascript - 什么时候可以断开套接字客户端

标签 javascript node.js sockets socket.io client-server

请看下面的代码。这是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/

相关文章:

javascript - 如何在nodejs中调用 setImmediate before/above .on ('data' ) fast-csv

node.js - 在hubot brain中生成表格并插入值

sockets - 重新连接以太网后,UDP套接字将写入过期的数据包。以太网断开连接后,如何从套接字刷新写缓冲区?

java - 读取/写入 Java 服务器套接字的最佳实践

javascript - 在 typescript 中访问主类中的方法

javascript - Fancybox 强制滚动到顶部

使用原型(prototype)方法未定义 Javascript 数组成员变量

javascript - 如何在 jQuery DataTable 的 AJAX 调用上传递额外参数

node.js - BrowserQuest 中的 websocket 服务器替换

c - UDP客户端/服务器组合C项目