不能socket.io客户端连接到服务器摩卡测试
问题描述:
尝试我开始使用下面的错误DEBUG = *不能socket.io客户端连接到服务器摩卡测试
mocha:runner run suite Chat Server Message Events +1ms
Message Events
socket.io-client:url parse http://localhost:5000 +1s
socket.io-client ignoring socket cache for http://localhost:5000 +0ms
socket.io-client:manager readyState closed +1ms
socket.io-client:manager opening http://localhost:5000 +2ms
engine.io-client:socket creating transport "websocket" +1ms
engine.io-client:socket setting transport websocket +7ms
socket.io-client:manager connect attempt will timeout after 20000 +1ms
socket.io-client:manager readyState opening +1ms
engine.io-client:socket socket error
{"description":
{"code":"ENOENT",
"errno":"ENOENT",
"syscall":"connect",
"target":{"domain":null,
"_events":{},
"_maxListeners":10,
"_socket":null,
"_ultron":null,
"_closeReceived":false,
"bytesReceived":0,
"readyState":0,
"supports":{"binary":true},
"extensions":{},
"_isServer":false,
"url":"ws://localhost:5000/socket.io/?EIO=3&transport=websocket",
"protocolVersion":13,
"binaryType":"buffer"}}} +2ms
这种情况不会发生socket.io,客户端连接到节点服务器,当我在浏览器上使用socket.io-client,使用相同的套接字配置。
下面是测试代码:
var server = require('myServer');
var io = require('socket.io-client');
var url = 'http://localhost:5000';
var options = {
transports: ['websocket'],
'force new connection': true
};
var sender;
describe("Server Test", function() {
it('Should login user', function (done) {
sender = io(url, options);
});
});
这里是服务器代码:
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.on('connection', function (socket) {
console.log("connect");
});
server.listen(5000);
服务器工作正常。它显示scoket.io-client从浏览器运行但未进行测试时的日志消息。
有人能给我一个线索为什么会发生这种情况?
答
由于您正在测试,您可能在nodejs环境中定义了global.window。和this行代码完全不
指望它您应该删除global.window对象或写类似global.WebSocket = require('ws');
或删除transports: ['websocket']