首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php和socket.io实现通知系统

问用php和socket.io实现通知系统
EN

Stack Overflow用户
提问于 2012-03-07 18:08:52
回答 2查看 1K关注 0票数 3

我正在尝试用php和socket.io建立一个通知系统。其想法是,客户端连接到socket.io并等待通知。一个PHP脚本在另一个端口上通过curl连接到socket.io,并发布更新,该更新被传递到连接的客户端。客户端通过它们在连接事件之后在消息中发送的id来标识。我存储与user_id关联的套接字变量。一切正常,但是过了一段时间脚本就停止工作了。似乎过了一段时间,存储在数组中的套接字变量。然而,我的服务器代码发布在下面

代码语言:javascript
复制
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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-22 22:53:19

问题是,连接几乎每分钟都会丢失。您必须在"disconnect“函数中收集数据,并在" connection”函数中重新初始化连接。

票数 0
EN

Stack Overflow用户

发布于 2012-04-19 08:53:23

您必须为disconnect添加一个处理程序,如下所述:

代码语言:javascript
复制
socket.on('disconnect', function () {
    //delete socket from sockets;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9599421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档