【问题标题】:Sailsjs Socket IOSailsjs 套接字 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 的东西在互联网上没有很好的记录。它应该可以帮助像我这样的人.. :-)

标签: node.js socket.io sails.js


【解决方案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,你能看看这个问题吗? stackoverflow.com/questions/37129766/…
  • 我无法将 socket.io 测试器与sails js 连接起来。没有套接字方法调用,我做错了配置
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 2016-07-30
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多