我在sails.js中设置了一个消息传递控制器,并希望通过多个客户端对其进行测试,以查看发布/订阅代码是否有效。我设置了一个测试文件
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...
工作并将消息发布到数据库。
因此,我想测试当新消息发布时客户端可以接收通知。但是,当我从client1或client2发布时,它都从两者发布。本质上,它们链接到相同的套接字对象或类似的对象,但是我不知道在哪里。因此,我想连接多个套接字,并且尝试了socket3和client3之类的变体,但遇到以下问题:
client3.socket.get...
和client3.socket.post...
和其他变体(forceNew,多路复用等)均挂断并且无法解析。挂断示例:
sails.log('posting...');
client3.socket.post('/v1.0/messaging', data, function(body, JWR){
sails.log('posted');
done();
});
仅以这种方式记录posting...
,但如果使用posted
或client1
,则记录client2
。
我的问题:如何将多个客户端连接到我的Sails api,以测试我的发布/订阅控制器是否正常工作?
我现在无法测试,但是您可以尝试此操作
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)
这样,您将使用create several SailsSocket instance而不是使用"eager" instance。
[当您在浏览器中使用sails.io.js
时,io.socket
包含套接字实例(在注释中称为“ eager实例”),套接字实例将自动尝试使用从其提供js文件的主机进行连接。 io.sails.connect()
允许您创建其他实例。
socket.io的实际版本的正确语法应该是
//first socket
var socket1 = socketIOClient('http://localhost:1337', {'forceNew: true});
//second socket
var socket2 = socketIOClient('http://localhost:1337', {'forceNew: true});
请参阅socket.io文档http://socket.io/blog/socket-io-1-2-0/#