我試圖用php和socket.io建立一個通知系統。這個想法是,客戶端連接到socket.io並等待通知。 PHP腳本通過另一個端口上的curl連接到socket.io,並將更新發布到連接的客戶端。客戶端通過他們在連接事件後發送消息的標識進行標識。我存儲與user_id關聯的套接字變量。一切正常,但一段時間後腳本停止工作。看起來,在一段時間後,存儲在數組中的套接字變量。但是我的服務器代碼下面貼用php和socket.io通知系統
var notification_port = 8001;
var oak_port = 8002;
var io = require('socket.io').listen(notification_port);
var clients = new Array();
io.sockets.on("connection", function(socket){
socket.on("__identification", function(message){
if (message.id){
console.log("user with session id " + message.id + " connected!");
var sockets = clients[message.id];
if (!sockets){
sockets = new Array();
}
sockets.push(socket);
clients[message.id] = sockets;
}
});
});
var url = require('url');
var oakListener = require('http').createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
var sockets = clients[query.id];
if (sockets){
for (var i = 0; i < sockets.length; i++){
sockets[i].emit("notification", query);
}
res.end('ok');
} else {
res.end('failed');
}
}).listen(oak_port);