官网提供的例子是这样的:
var app = require('http').createServer(handler)var io = require('socket.io')(app);io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); });});// 这里能否访问socket?
也就是说任何发送和监听信息的操作都需要在io.on('connection', function(socket){...}
里进行,我的问题是,这个socket
可否在这个scope外部调用?
我试过用io.emit
可以emit信息,但是一些复杂的比如点对点发送socket.broadcast.to(socketid)
还没有找到解决的方法
解决方案
自己解决了
可以用node.js的event类做一个简单的内部通信
var app = require('http').createServer(handler)var io = require('socket.io')(app);var EventEmitter = require('events').EventEmittervar emitter = new EventEmitter();io.on('connection', function (socket) { emitter.on('LOCAL_FWD', function(message) { console.log('Received local message' + message); socket.broadcast.to(xxx).emit('YYY', message); } socket.on('my other event', function (data) { console.log(data); });});emitter.emit('LOCAL_FWD', 'test message');