技术
- flask (Python)
- Flask-Socket.IO(使用eventlet)
- WFastCGI
- IIS(Windows)
问题
我在IIS Web服务器上运行时遇到Flask-Socket.IO问题。我是WebSockets新手,所以我很清楚我可能只是做错了什么-很可能是一些显而易见的事情。
一点背景知识
我已经成功地在我的开发服务器上实现了Flask-Socket.IO,而且每次都能完美地工作(甚至在与生产服务器相同的本地机器上运行)。但是,当我尝试在IIS Web Server上运行时,我根本无法让它工作。应用程序的其他部分运行得非常好,但是使用Socket.IO的任何部分都会导致对WebSocket的重复调用,并出现以下错误:
与“”的WebSocket连接失败:在建立连接之前WebSocket已关闭。
...在一堆失败的POST
和GET
请求中:<DOMAIN:PORT>/socket.io/?EIO=4&transport=polling&t=...&sid=...
我所尝试的 (无效):
1.为***IIS***安装WebSocket Protocol
(尝试将enabled
同时设置为true
和false
)
1.初始化***Socket.IO***,使用:socketio.init_app(app, cors_allowed_origins="*")
(只是为了测试,看看它是否解决了问题)***[剧透:它没有
1.卸载eventlet
并安装gevent
1.阅读所有可以在网上阅读的东西
1.凝视着深夜困惑的深渊,想知道我为什么要这样对自己。
永远的挫折
正如你可能会告诉,我很想得到这一个解决了,所以我可以移动到下一个东西,总是行不通:)
有人有什么建议吗?我会很感激的
谢谢
1条答案
按热度按时间6rqinv9w1#
如何在IIS上部署Flask WebSocket应用程序:
1.代码
app.py
这是一个简单的代码,用于运行一个WebSocket,它接受一个十六进制数字,对它做一些数学运算,并将其作为字符串返回。
ws_Handler.py
它是一个处理程序,通过gevent为www.example.com提供服务app.py。
1.IIS
1.运行代码
在本地主机上运行ws_Handler.py,为此只需在终端上运行以下命令:
python ws_Handler.py
现在你的gevent服务器正在运行,你会在终端上看到这个输出:
为事件初始化服务器。
现在你可以在IIS上使用绑定域的服务器了。