gpt4 book ai didi

node.js - 连接到 socket.io azure webapp 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:24 25 4
gpt4 key购买 nike

我已经在 azure 上部署了一个 socket.io v0.9.17 Node js 应用程序(我已经使用两个客户端在本地进行了测试,并且工作正常),代码如下:

var util = require("util");
var port = process.env.PORT || 1337;
var app = require("http").createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Socket.io application");
}).listen(port);

var io = require('socket.io').listen(app);

io.configure(function () {
io.set("transports", ["websocket"]);
});

io.sockets.on('connection', function (client) { ... }

我尝试通过 socket.io-java-client 连接到它:

// Have tested with different ports
socket.connect("http://myapp.azurewebsites.net:1337/", this);

这在客户端上给了我错误:

Error while handshaking... Operation timed out

服务器上的日志:

debug: websocket writing 1::
debug: setting request GET /socket.io/1/websocket/SFePun_Ug5ycS5EVIrSO
debug: set heartbeat interval for client SFePun_Ug5ycS5EVIrSO
debug: discarding transport
debug: cleared heartbeat interval for client SFePun_Ug5ycS5EVIrSO
debug: setting request GET /socket.io/1/websocket/SFePun_Ug5ycS5EVIrSO
debug: set heartbeat interval for client SFePun_Ug5ycS5EVIrSO
debug: discarding transport
debug: cleared heartbeat interval for client SFePun_Ug5ycS5EVIrSO
debug: setting request GET /socket.io/1/websocket/SFePun_Ug5ycS5EVIrSO
debug: set heartbeat interval for client SFePun_Ug5ycS5EVIrSO
debug: discarding transport
(repeated a couple of times)
...
IIS Detailed Error - 503.13 - Number of active WebSocket requests has reached the maximum concurrent WebSocket requests allowed.

socket.connect("http://myapp.azurewebsites.net/", this);

如果我连接一个客户端,则不会发生这种情况。

有什么想法可以解决这个问题吗?

编辑:尝试从传输 websocket 更改为 xhr-polling。这不会给我 HTTP 503.13 错误并建立与服务器的连接,但效果不佳。

最佳答案

据我所知,您需要启用 Web sockets选项卡 Application settings 中的选项在 Azure 门户上或配置 web.config用于添加内容的文件 <webSocket enabled="true" />如果你想使用 websocket 功能。

作为引用,请参阅下文。

图 1. 启用 Web sockets在 Azure 门户上 enter image description here

引用wiki页面Using a custom web.config for Node apps ,websocket 功能默认禁用。

正如@ArneRie所说,Azure webapps仅监听端口80和443,请参阅https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening .

对于不同层的每个应用服务实例的 Websockets 限制,请参阅 https://azure.microsoft.com/en-us/documentation/articles/azure-subscription-service-limits/#app-service-limits .

enter image description here enter image description here

所以我认为第一步是确保启用了websocket功能,然后尝试通过socket.io-java-client与http协议(protocol)和端口80建立websocket连接。

希望有帮助。如有任何疑问,请随时告诉我。

关于node.js - 连接到 socket.io azure webapp 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com