首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在蔚蓝web服务上使用socket.io-redis

在蔚蓝web服务上使用socket.io-redis
EN

Stack Overflow用户
提问于 2016-10-18 15:18:34
回答 1查看 826关注 0票数 0

目前,我已经部署了一个节点应用程序到azure应用程序服务。我目前的应用服务计划有两个核心处理器。我在nodeProcessCountPerApplication文件中设置了iisnode.yml :2。现在,我已经实现了实时更新UI的socket.io功能。对于单个进程,它可以很好地工作。当我使用nodeProcessCountPerApplication: 2个问题开始。我收到了以下错误-

代码语言:javascript
复制
{"code":1,"message":"Session ID unknown"}

我试着用socket.io-redis解决这个问题。这是使用redis的代码-

代码语言:javascript
复制
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

但是在更改后得到以下错误-

代码语言:javascript
复制
Error: Redis connection to localhost:6379 failed - connect EACCES 127.0.0.1:6379
    at Object.exports._errnoException (util.js:1008:11)
    at exports._exceptionWithHostPort (util.js:1031:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)

我错过了什么。感谢你的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 01:40:57

根据我的经验,当客户端使用XHR轮询传输时,并且服务器处于群集模式时,就会出现这个问题。所以我认为最好的解决方案是只使用WebSocket。要做到这一点,您可以按照以下步骤操作:

  1. 使用Azure Portal启用WebSockets 单击web刀片中的Web应用程序,单击所有设置>应用程序设置。在Web套接字下,单击。然后单击Save。

  1. 告诉Socket.IO只使用WebSocket 替换客户端中的下列代码 var socket = io(); 到此代码: var socket = io({transports: ['websocket']});

希望能帮上忙。如有任何进一步的关注,请随时通知我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40112057

复制
相关文章

相似问题

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