NodeJS:Socket.IO:Websocket请求的状态显示为已完成,而不是预期的101

时间:2018-08-21 09:40:30

标签: node.js azure websocket socket.io

我有一个实现Socket.io的Node JS应用程序。该应用程序可以在测试过程中完美托管。但是,当部署到Azure Apps时,它开始出现异常行为。 在分析请求后,我发现了两个差异。

  1. websocket请求从本地主机以ws:// localhost:3000 / ...发送,而在Azure Apps上以wss:// azure-apps-url / ...
  2. 发送
  3. websocket请求在localhost上时的HTTP状态为101,在部署时为“(完成)”。

注意:我的azure应用程序已启用websocket。

我不知道可能是什么问题。任何帮助,将不胜感激。请让我知道是否需要应用程序代码来调试问题。

编辑:根据要求添加代码。 服务器端代码:

var express = require('express');
var app = express();
var ExpressPeerServer = require('peer').ExpressPeerServer;
var options = {
    debug: false
}
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(process.env.PORT || 3000);

app.use('/peerjs', ExpressPeerServer(server, options));

客户端代码

$(document).ready(function(){
//localhost:3000 to be replaced by Azure Site URL
var socket = io.connect("localhost:3000");
var peer = new Peer({host: "localhost", port: "3000", path: "/peerjs"});

//further operations with peer and socket
}

1 个答案:

答案 0 :(得分:0)

server.listen(process.env.PORT || 3000);更新为server.listen(process.env.port);似乎已解决了该问题。但是,套接字连接仍然不起作用。我假设PeerJS和Socket.IO的实现都可能引起某种冲突。