Sailsjs 套接字 IO

Posted

技术标签:

【中文标题】Sailsjs 套接字 IO【英文标题】:Sailsjs Socket IO 【发布时间】:2014-01-03 09:58:55 【问题描述】:

我是 SailsJs 和 Socket IO 的新手。我想在 Sailsjs 中执行下面的 Socket IO 示例。在服务器端,我需要执行以下代码。但我不知道在哪里放置这段代码。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) socket.emit('news', 你好:'world' ); socket.on('我的其他事件', function (data) 控制台.log(数据); ); );

我知道我可以把它放在控制器的函数中,但它会为每个我不想要的请求添加监听器。

客户端:

var socket = io.connect('http://localhost'); socket.on('news', function (data) 控制台.log(数据); socket.emit('我的其他事件', my: 'data' ); );

告诉我在sailsjs中放置服务器端代码的位置并帮助我执行上面的socketIO示例。

【问题讨论】:

sails.js 实现实际上路由它的所有 socket.io 请求通过 express.js 接口。查看here 了解如何使用 Sails 实现套接字;虽然它们也支持原生 Socket.io 控件,但这可能不是最好的起点。 @r3mus 我同意。我只需要知道在sailsjs 中运行本机SOCKET.IO 服务器代码的位置。感谢您的回复。赞赏。 我会构建一个基本的sails项目并查看代码以查看套接字的配置位置; TBH 我实际上还没有用 Sails 做过任何非标准套接字的东西。 是的。据我所知.. 这种在风帆中访问本机 socket.io 的东西在互联网上没有很好的记录。它应该可以帮助像我这样的人.. :-) 【参考方案1】:

嗯,你的代码建议你想在connection 上做点什么。

有一个位于/config/sockets.js 的文件,它内置了connectdisconnect 的函数,也许你正在寻找这个。

如果您不是,那么您将希望将其放入控制器“动作”,如果您更深入地思考您想要实现的目标,那么您可能需要一个您调用的动作一次为您处理。

如果你最终尝试了sockets.js 文件,那么你应该有一些看起来像这样的东西

onConnect: function(session, socket) 
  socket.emit('news',  hello: 'world' );
  socket.on('my other event', function (data) 
    console.log(data);
  );
 // By default: do nothing
 // This is a good place to subscribe a new socket to a room, inform other users 
 // that someone new has come online, or any other custom socket.io logic

【讨论】:

如果你有很多 socket.on 函数你想放在里面怎么办? onConnect 里面有很多代码会减慢每个套接字连接吗?还有其他地方可以放这个代码吗? (但不是控制器)例如是否可以将此代码放在 sockets.js 中但在 OnConnect 之外? @jantar 据我所知,您必须在连接函数中拥有每个“socket.on”函数,即使没有sails.js,也没有其他方法可以做到这一点 @iConnor,你能看看这个问题吗? ***.com/questions/37129766/… 我无法将 socket.io 测试器与sails js 连接起来。没有套接字方法调用,我做错了配置

以上是关于Sailsjs 套接字 IO的主要内容,如果未能解决你的问题,请参考以下文章

Sailsjs:在 Sails 0.11 中,如何不使用带有套接字的 onConnect 生命周期回调

iOS 中的 Sailsjs SocketIO

通过套接字的身份验证方法

将socket.io与sails js一起使用

ReferenceError:未定义套接字。套接字.io

如何使用 socket.io 断开所有套接字服务端?