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
的文件,它内置了connect
和disconnect
的函数,也许你正在寻找这个。
如果您不是,那么您将希望将其放入控制器“动作”,如果您更深入地思考您想要实现的目标,那么您可能需要一个您调用的动作一次为您处理。
如果你最终尝试了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的主要内容,如果未能解决你的问题,请参考以下文章