当前位置: 首页 > 知识库问答 >
问题:

socket.io房间不在Azure上工作,但在本地工作

欧阳飞章
2023-03-14
io.on('connection', function(socket) {
    socket.on('userid', function(data) { 
      socket.join(data.userid+'-'+data.dashboard);
      notification.find({userid: data.userid, to: data.dashboard, received_by_user: false}, function(err, notifs) {
            socket.emit('get_notifications', notifs);
      }
    }
});
app.post('/notify', function(req, res, next) {
  var notif_recv = new notification(req.body);
  notif_recv.save(function (err, notif_recv) {
       io.sockets.in(notif_recv.userid+'-'+notif_recv.dashboard).emit('new_notification', notif_recv);
  });
res.send(200);
});

IIS可能会搞砸它?我倾向于认为IIS对于app.post('/notify'...io.on('connection'...)有不同的进程,因此,我在app.post上引用的套接字与我在io.on('connection'...(socket.join(...))中加入用户是不同的。

在Azure/IIS中使用socket.io房间时有什么提示吗?谢了!

共有1个答案

房育
2023-03-14

您是否尝试添加用于调试的“断开连接”处理程序?

io.on('connection', function (socket) {
  socket.on('disconnect', function(){ //add this part
   console.log('Client disconnected');    
  });
  socket.emit('get_notifications', "get_notifications_:"+new Date());
});

还要在每次发射和接收时记录日志,这样您就可以确切地知道客户端何时断开连接。如果它在get_notifications事件后断开连接,请确保没有向客户端发送回调,或者客户端没有期待来自服务器的回调。

我注意到notification.find(..)socket.on('userid'..)缺少一些关闭大括号。我希望这只是在你粘贴在这里的代码中。

 类似资料:
  • 问题内容: 我有这个Node.JS 服务器 : 客户端代码: 问题在于它似乎仅在本地工作。在ubuntu chrome上,我得到: 在Mac上,同一文件出现GET错误… 对可能是什么问题有任何想法吗? 问题答案: 网站的域名与托管位置无关,而与您用来访问它的URL有关。 即使“ 192.168.1.130”和“ localhost”解析到同一服务器,它们也被视为不同的域。 结果,因为您具有客户端代

  • 我正在使用Amazon Linux AMI在EC2 AWS上运行以下脚本 从今天起,由于EC2上没有任何更改或新安装,脚本在昨天之前一直工作时停止工作。 本地计算机上的相同脚本仍然有效。 相反,在EC2上会出现以下错误: (节点:12636)UnhandledPromiseRejectionWarning:错误:导航失败,因为浏览器已断开连接!在cdpsession.lifecyclewatche

  • 我正在使用PHP*TCPDF/FPDI类动态生成PDF。。 虽然本地发展(WAMP/localhost)... 现在我已经把东西上传到了直播服务器上。。我在同一个文件上只得到一张空白页。。使用相同的目录结构。。 但是,在实时环境中进行测试时。。它不起作用? 只是一个空白页,没有错误...等等。 这是我目前使用的代码。。 (我试图在构造函数和超文本标记语言输出中添加UTF-8编码...?? 代码:

  • 我使用devise gem with rails进行身份验证,我的应用程序在本地运行良好,但是在heroku上部署时无法访问device视图。 检查日志时出现以下错误: ←[app[web.1]:←[0mDevis处理e::SessionsController#新作为超文本标记语言 ←[app[web.1]:←[0mDevis处理e::SessionsController#新作为超文本标记语言 ←

  • 问题内容: 我已经进行了永久搜索,无法为我的问题提供确切的答案。就是这样。我有一个看起来像这样的JSON文件(我去了jsonlint进行验证,它说的很好): 我使用jQuery解析并使用此函数放置在html页面上: 它完美地工作!现在是我的问题,JSON文件将不在本地托管,并且实际上将托管在单独的域中。所以我修改了我的代码如下(经过阅读),希望它能正常工作: 通过添加“回调”行,我停止出现“无法加

  • 我已经很久没有使用Heroku了,所以我有点生疏了。我创建了一个运行Ratchet IOServer的小型PHP应用程序。它监听端口5000。如果我运行并使用连接,一切似乎都能正常工作。我尝试了几种让PHP进程运行并接受连接的方法。 我的Procfile如下所示; 正在运行 然后,当我将服务器部署到Heroku时,它就不工作了。当我尝试telnet到端口上的框时,我得到 我刚刚读了关于Heroku