Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试Socket.io应用程序,其中两个连接相互作用_Javascript_Node.js_Socket.io_Mocha.js - Fatal编程技术网

Javascript 测试Socket.io应用程序,其中两个连接相互作用

Javascript 测试Socket.io应用程序,其中两个连接相互作用,javascript,node.js,socket.io,mocha.js,Javascript,Node.js,Socket.io,Mocha.js,我对NodeJS的单元测试非常陌生,现在我想使用Mocha测试socket.io服务器,该应用程序涉及两个socket的交互,规范如下 var expect = require('expect.js'); var io = require('socket.io-client'); describe("Server", function() { var options = { transports: ['websocket'], 'force new co

我对NodeJS的单元测试非常陌生,现在我想使用Mocha测试socket.io服务器,该应用程序涉及两个socket的交互,规范如下

var expect = require('expect.js');
var io = require('socket.io-client');

describe("Server", function() {
    var options = {
        transports: ['websocket'],
        'force new connection': true
    };

    var socketOne;
    var socketTwo;

    it("Should do stuff", function(done) {

        socketOne = io.connect("http://localhost:3000");

        socketOne.on("connect", function(data) {
            socketTwo = io.connect("http://localhost:3000");

            socketTwo.on("connect", function(data) {
                console.log("hellow world");

            });
        });

        socketOne.on("connection", function(x) {
            console.log(x);
            done();
        });
    });

});

现在,我只想让测试创建两个套接字连接,但当我运行它时,似乎只有“socketOne”连接到服务器,而socketTwo.on(“连接”)没有被调用。您知道我做错了什么吗?

socket.io客户端将回收(多路复用)任何现有连接,这就是为什么您的第二个连接没有触发connect事件的原因。要防止出现这种情况,可以通过在连接选项中指定
{multiplex:false}
来禁用多路复用。像这样:

socketOne = io.connect("http://localhost:3000");

socketOne.on("connect", function(data) {
    socketTwo = io.connect("http://localhost:3000", {multiplex: false});

    socketTwo.on("connect", function(data) {
        console.log("hellow world");

    });
});