服务器:sails.js (0.11.x) 是服务器
客户端:带有sails.io@0.11.5 和socket.io-client@1.3.5 的node.js 脚本
大图:我拥有或将拥有一个连接到sails.js 服务器并执行各种任务的node.js 脚本群。
即时目标:我想在客户端->服务器的套接字连接期间发出一个事件,例如:
socket.emit('got_job', job.id);
为什么?如果可能的话,我可以在一个控制器(或控制器+服务)中的服务器端创建各种事件处理程序,并在管理客户端/服务器端点之间的一组有状态事务以支持此脚本场的同时保持我的代码干净。
文档:这是使用 socket.io-client 进行sails.js 的方式,每个sails 文档:https ://github.com/balderdashy/sails.io.js?files=1#for-nodejs
除了该链接中的内容外,我没有太多要共享的代码,但我会将其粘贴在这里以防万一:
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
// Instantiate the socket client (`io`)
// (for now, you must explicitly pass in the socket.io client when using this library from Node.js)
var io = sailsIOClient(socketIOClient);
// Set some options:
// (you have to specify the host and port of the Sails backend when using this library from Node.js)
io.sails.url = 'http://localhost:1337';
// ...
// Send a GET request to `http://localhost:1337/hello`:
io.socket.get('/hello', function serverResponded (body, JWR) {
// body === JWR.body
console.log('Sails responded with: ', body);
console.log('with headers: ', JWR.headers);
console.log('and with status code: ', JWR.statusCode);
// When you are finished with `io.socket`, or any other sockets you connect manually,
// you should make sure and disconnect them, e.g.:
io.socket.disconnect();
// (note that there is no callback argument to the `.disconnect` method)
});
我所调查的内容:我已经深入研究了这些对象的各个级别,但似乎找不到任何可以使用的东西。并且简单地尝试 io.socket.emit() 因为它不存在。但是 io.socket.get() 和 io.socket.post() 等工作正常。
console.log(socketIOClient);
console.log(sailsIOClient);
console.log(io);
console.log(io.socket._raw);
console.log(io.sails);
谢谢,我会根据需要尝试更新以进行澄清。
更新:
杂项服务器信息。:
- 我在端口 443 上使用 nginx,带有 SSL 终止,指向不同端口(3000-3003)上的 4 个(以及更多)sails.js 实例。
- 我还将 Redis 用于会话和套接字。