Node.js 如何在测试中将多个套接字连接到sail
我在sails.js中设置了一个消息传递控制器,并希望使用多个客户端对其进行测试,以查看发布/订阅代码是否有效。我建立了一个测试文件Node.js 如何在测试中将多个套接字连接到sail,node.js,sockets,socket.io,sails.js,Node.js,Sockets,Socket.io,Sails.js,我在sails.js中设置了一个消息传递控制器,并希望使用多个客户端对其进行测试,以查看发布/订阅代码是否有效。我建立了一个测试文件 var socketIOClient = require('socket.io-client'); var sailsIOClient = require('sails.io.js'); var socket1 = socketIOClient; var client1 = sailsIOClient(socket1); var socket2 = socketI
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
var socket1 = socketIOClient;
var client1 = sailsIOClient(socket1);
var socket2 = socketIOClient;
var client2 = sailsIOClient(socket2);
var socket3 = socketIOClient('http://localhost:1337', {'force new connection': true});
var client3 = sailsIOClient(socket2);
...
起作用并表示已订阅client1.socket.get…
工作并向数据库发布消息client1.socket.post…
和client3.socket.get…
以及其他变体(forceNew、multiplexing等)都挂断了,无法解决client3.socket.post…
sails.log('posting...');
client3.socket.post('/v1.0/messaging', data, function(body, JWR){
sails.log('posted');
done();
});
只有posting…
以这种方式记录,但是如果使用client1
或client2
则记录posted
我的问题:
如何将多个客户端连接到我的sails api以测试我的发布/订阅控制器是否工作?实际版本的socket.io的正确语法应该是
//first socket
var socket1 = socketIOClient('http://localhost:1337', {'forceNew: true});
//second socket
var socket2 = socketIOClient('http://localhost:1337', {'forceNew: true});
请参阅socket.io文档我现在无法测试它,但您可以试试这个
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
// Instantiate the socket client (`io`)
var io = sailsIOClient(socketIOClient);
// prevents socket to connect with it's default origin
io.sails.autoConnect = false
// Ask the client to create two socket connections
var socket1 = io.sails.connect('http://localhost:1337');
var socket2 = io.sails.connect('http://localhost:1337');
// Test it
socket1.get(url, data, cb)
socket1.post(url, data, cb)
socket2.get(url, data, cb)
socket2.post(url, data, cb)
// If you want to configure and use the "eager" instance
io.sails.url = 'http://localhost:1337';
io.socket.get(url, data, cb)
这样,您就不用使用
在浏览器中使用
sails.io.js
时,io.socket
包含套接字实例(在注释中称为“渴望实例”),该实例将自动尝试使用提供js文件的主机进行连接io.sails.connect()
允许您创建其他实例。我尝试了此操作,但其结果与'multiplex':false
和'force new connection':true
相同-请参见我刚才添加的示例。有可能发生这种情况的原因吗?非常感谢!我非常感谢您对源代码的解释和链接,以说明其工作原理:)