Sails 0.11 从服务器端捕获套接字事件

Posted

技术标签:

【中文标题】Sails 0.11 从服务器端捕获套接字事件【英文标题】:Sails 0.11 catching socket events from server side 【发布时间】:2015-01-07 05:45:24 【问题描述】:

根据sails v0.11 的新版本,onConnect 函数在 config/sockets.js 文件中已弃用。 我无法实现 socket.on 事件或从服务器端捕获套接字事件。 有什么方法可以实现吗?

按照@mikermcneil 的建议更新config/bootstrap.js 中的代码:

module.exports.bootstrap = function(cb)  
    sails.io.on('connect', function (socket)
        socket.on('testE',  function(data)  
            socket.emit('testEvent',p1:'hehe');
        );
    );
cb();
;

【问题讨论】:

【参考方案1】:

在此处查看迁移指南:https://github.com/balderdashy/sails/blob/master/0.11-migration-guide.md#onconnect-lifecycle-callback

onConnect生命周期回调

tldr;

config/sockets.js 中删除您的onConnect 函数。

onConnect 生命周期回调已被弃用。相反,如果您需要在连接新套接字时执行某些操作,请从新连接的客户端发送请求以执行此操作。 onConnect 的目的始终是优化性能(消除与服务器进行初始额外往返的需要),但它的使用可能会导致混乱和竞争条件。如果您迫切需要消除服务器往返,您可以在引导函数 (config/bootstrap.js) 中直接在 sails.io.on('connect', function (newlyConnectedSocket)) 上绑定处理程序。但是,请注意,这是不鼓励的。除非您遇到true 生产性能问题,否则您应该将上述策略用于您的“连接时”逻辑(即在套接字连接后从客户端发送初始请求)。套接字请求是轻量级的,因此这不会给您的应用程序增加任何有形的开销,并且有助于使您的代码更具可预测性。

【讨论】:

是的,我以前读过文档,但没有集中注意力,因为不鼓励这种方法。我在 bootstrap.js 中添加了代码,就像上面更新的问题一样 :) 现在它可以工作了,非常感谢..

以上是关于Sails 0.11 从服务器端捕获套接字事件的主要内容,如果未能解决你的问题,请参考以下文章

使用node.js套接字客户端向sails.js(0.11.x)发出事件[重复]

React + Sails + Socket.io

Sails.js 0.11 和护照:“缺少凭据”错误

如何在 Sails 中捕获 MongoDB 错误

ZeroMQ 和 Sails.js

在套接字编程上捕获客户端从服务器退出