javascript - electronic/socket.io客户端-python-socketio/aiohttp服务器//连接失败

标签 javascript python websocket electron aiohttp

此websocket连接失败。有趣的是,这是几天前的工作。我将 Electron 从6降级到5.0.6,但这无济于事。

enter image description here
enter image description here

服务器

from aiohttp import web
import socketio


app = web.Application()
sio = socketio.AsyncServer()
# or sio = socketio.AsyncServer(cors_allowed_origins='*')
sio.attach(app)

@sio.on('connect')
async def user_connected(sid, arg):
    print(sid)
    print(arg)

if __name__ == '__main__':
    web.run_app(app)

客户端(也从纯节点进行了测试)
const con = 'http://0.0.0.0:8080';
const socket = require('socket.io-client').connect(con);

socket.on('connect', (e) => console.log(e));

在浏览器中尝试时,出现cors错误。因此,我允许使用cors
sio = socketio.AsyncServer(cors_allowed_origins='*')

当我现在从 Electron/节点运行此命令时,会得到与最初相同的错误以及一个关键错误:
enter image description here

由于它以前运行过,现在它不在两台不同的机器上运行,并且仅带有一个最小的示例项目,所以我不知道是什么原因导致了所有这些。

请帮我叠人。

最佳答案

在Twitter上与Miguel Grinberg聊天之后,我了解了如何进行设置。有几件事。首先,默认情况下4.3引入了CORS限制。由于节点不是浏览器,因此来自节点客户端的CORS header 存在一个错误。现在已经解决了。

但是,仅仅使用pip install python-socketio还是不够的
您必须手动安装python-enginio的master分支,因为存在CORS header 修复程序。

我的Pipfile看起来像这样:

[packages]
aiohttp = "*"
aiohttp-cors = "*"
python-enginio = {git = "https://github.com/miguelgrinberg/python-engineio/",ref = "master"}
python-socketio = "*"

不要忘记现在允许CORS在服务器端使用。
sio = socketio.AsyncServer(cors_allowed_origins='*')

关于javascript - electronic/socket.io客户端-python-socketio/aiohttp服务器//连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301646/

相关文章:

javascript - 我可以将逻辑运算符放在 document.querySelectorAll 中吗?如果是这样,如何?

java - 如何停止使用 Java 和 Python 客户端在 RabbitMQ 中消费?

python - Djangob 问题

javascript - 为什么caniuse.com上没有ES2018、ES2019

javascript - 谷歌图表点颜色

c++ - C 或 C++ websocket 客户端工作示例

python - 实现发布-订阅模式时如何在 Django 和 Twisted 之间进行通信?

tcp - 强制断开 WebSocket 连接的最简单方法是什么?

javascript - Python 和 JavaScript 之间的连接

python - 为 pandas/matplotlib 设置 xlim,其中索引为字符串