【发布时间】:2012-05-04 16:40:20
【问题描述】:
目前我有一个 getter/setter 套接字模块,如下所示
var socket;
module.exports.getSocket = getSocket;
module.exports.setSocket = setSocket;
function getSocket() {
return socket;
}
function setSocket(sock) {
if (undefined == socket) socket = sock;
}
在app.js中我设置如下
var sio = require('./lib/socket');
var io = require('socket.io').listen(app);
io.sockets.on('connection', function (socket) {
sio.setSocket(socket);
});
在我的模块中我使用如下
sio = require('./lib/socket');
socket.getSocket().broadcast.emit(...);
似乎有点做作,有没有更好的方法来做到这一点?
编辑:我想要一个通用的解决方案来解决触发不是由客户端套接字发起的消息的问题。例如,假设我从外部来源检索股票价格并希望在价格更新时触发一个事件。由于它不是客户端启动的,我如何才能访问套接字?或者,假设我希望触发套接字消息以响应 POST 请求。我再次不确定如何访问套接字。
【问题讨论】:
-
除非您只有一个用户使用系统,否则您的代码将无法正常工作。问题是,第一个连接的人永远是由 getSocket 存储和返回的套接字。