Javascript 测试Socket.io应用程序,其中两个连接相互作用
我对NodeJS的单元测试非常陌生,现在我想使用Mocha测试socket.io服务器,该应用程序涉及两个socket的交互,规范如下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
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");
});
});