gpt4 book ai didi

node.js - 套接字 IO 网络::ERR_CONNECTION_REFUSED

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

我正在尝试将 socket.io 实现到托管在 Azure 网站上的应用程序中。 网络应用

这是server.js

var app = require('express')();
var server = require('http').createServer(app);

server.listen(process.env.PORT || 3001)

app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});

var io = require('socket.io')(server);

io.on('connection', function (socket) {
console.log("Socket connected :"+socket.id);
socket.emit('news', { hello: 'world' });
});

这是客户端套接字。索引.html

<script src="socket.io/socket.io.js"></script>
<script>
var socket = io('http://localhost:3001');
console.log("scoekt connect",socket)
socket.on('connect', function(){ console.log('connected to socket'); });
socket.on('error', function(e){ console.log('error' + e); });

socket.on( 'news', function( data ){
console.log("socket data",data);

});</script>

我收到以下错误 enter image description here

我不太确定出了什么问题。这是文件系统的结构

ROOT
app/
index.html
server.js
web.config

PS:这是一个 Angular2 应用程序

PS:我已经检查了基于此错误的所有建议问题,但没有一个解决了我的问题,因此我发布了这个问题。

最佳答案

根据我的经验,Azure Web App 不会将 loaclhost127.0.0.1 绑定(bind)到您的网站,并且只有端口 80 和 443 是面向公众的。这映射到您的应用程序要监听的特定端口,可通过 process.env.PORT 检索。所以你需要更换

var socket = io('http://localhost:3001');

var socket = io('http://<your app name>.azurewebsites.net');

如果您的服务器端和客户端位于不同的域中,您还需要启用 CORS在服务器端。在Azure中,我们可以通过Azure门户启用它。

  • 在浏览器中,转到 Azure portal ,然后导航到您的应用服务。
  • 点击API菜单中的CORS
  • 在空的允许的来源文本框中输入每个网址。将创建一个新文本框。或者,您可以输入星号 (*) 来指定接受所有源域。
  • 点击保存

enter image description here

Socket.IO 使用 WebSocket,但 Azure 上默认情况下未启用 WebSocket。您还可以使用 Azure 门户启用 WebSocket 支持。请参阅以下步骤。

  • 在 Azure 门户中,单击设置菜单中的应用程序设置
  • 网络套接字下点击打开
  • 点击保存

enter image description here

更多信息请引用this documentation .

关于node.js - 套接字 IO 网络::ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42053499/

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