gpt4 book ai didi

node.js - Express-Socket.IO 应用程序无法与我的 Azure WebApp 配合使用

转载 作者:行者123 更新时间:2023-12-03 03:42:46 28 4
gpt4 key购买 nike

出于教育目的,我尝试部署使用 Socket.IO 的 Express 服务器。服务器应该能够提供使用 React 构建的静态 HTML 站点,并用“Hello Azure!”进行回答。每当我向 http://localhost:4000/api/azure 发出 GET Rest 调用时,每当新客户端连接到该站点时,所有其他客户端都会收到一条消息,宣布新客户端。

const path = require('path');
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
const router = require('./api/azure');

const PORT = process.env.PORT || 4000;

io.on('connection', () => {
console.log('A new user has connected!')
io.emit('broadcast', 'A new user has connected');
});

app.use(express.json());

app.use('/api/azure', router);

app.use(express.static(path.join(__dirname, 'build')));
app.use(express.static('public'));
app.use('/', (_, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});


server.listen(PORT, () => {
console.log(`Listening to http://localhost:${PORT}`);
});

所有这些任务都在本地主机中顺利完成。将此应用程序上传到我的 Azure WebApps 之一后,问题就开始了。

而不是传递消息“Hello Azure!”当我调用https://mydomain.azurewebsites.net/api/azure时它会返回 HTML 文件。

典型的 Socket.IO GET 轮询方法https://mydomain.azurewebsites.net/socket.io/?EIO=4&transport=polling&t=SomeString也使用 HTML 文件进行响应。

我提供的所有 URL 扩展名都会返回 HTML 文件。

我几乎不知道有关 WebApps 的基本知识。也许有一个配置我忘记了?顺便说一下,除了在 WebApp 配置中启用了 Websockets 之外,我没有在配置中执行任何操作。

这以前从未发生过。唯一的区别是,现在我使用免费套餐只是为了测试。会是这样吗?如果不是,我做错了什么?

感谢您的宝贵时间!

最佳答案

首先,尝试关闭 Web Socket 配置,因为它适用于 IIS 设置,这往往与 Node.js websocket 实现相矛盾。

如果这没有帮助,请尝试强制传输层使用 Websockets 和 SSL。

io.configure(function() {
// Force websocket
io.set('transports', ['websocket']);

// Force SSL
io.set('match origin protocol', true);
});

此外,您不能在应用服务等服务上使用任意端口(在您的情况下为端口 4000)。您的应用程序将通过 process.env.PORT 提供一个端口。因此,请确保您在日志消息中引用了正确的端口。您应该能够在日志流中看到这些。

另请注意,Azure 推出了一项名为 Web PubSub 的完全托管服务,通过 Web Sockets 为您的应用程序提供支持。应用程序服务 Web 套接字实现不会水平扩展,而 Web PubSub 将为您提供帮助。 https://azure.microsoft.com/en-in/blog/easily-build-realtime-apps-with-websockets-and-azure-web-pubsub-now-in-preview/

关于node.js - Express-Socket.IO 应用程序无法与我的 Azure WebApp 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70405742/

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