我正在为 Windows Azure 项目在 node.js 中实现 socket.io。我必须定期向所有连接的客户端发送数据。
我是 node.js 的新手,但我想多线程是不可能的。socket.io 的目的是支持实时应用程序,那么有什么方法可以让我定期向所有连接的客户端连续发送数据,并同时处理客户端发送到 socket.io 服务器的任何数据?
编辑:
这大致是我的socket.io实现
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('first', "connected");
socket.on('clientData', function (data) {
//processing the data
});
});
function requestQueue() {
// some processing
io.sockets.emit('broadcast', recordsQueue);
// should go to sleep for a time period
}
本质上,我希望 requestQueue 方法像线程一样连续运行,它将以特定的时间间隔向连接的客户端发送数据。而且,如果客户端向“clientData”事件发送任何数据,那么我应该能够接收数据并处理它。
关于我该怎么做的任何想法?
谢谢
我的解决方案:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('first', "connected");
socket.on('clientData', function (data) {
//processing the data
});
});
function requestQueue() {
var sleepTime = 0;
// calcuate sleepTime
io.sockets.emit('broadcast', recordsQueue);
// should go to sleep for a time period
if(sleepTime !=0)
setTimeout(function () { requestQueue() }, sleepTime);
}