electron/socket.io client - python-socketio/aiohttp server // 连接失败
electron/socket.io client - python-socketio/aiohttp server // fail to connect
此 websocket 连接失败。有趣的是,这几天前还在工作。我将电子从 6 降级到 5.0.6 但这没有帮助。
服务器
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/node 运行 执行此操作时,我得到了与最初相同的错误加上一个关键错误:
因为它以前可以工作,现在它不能在 2 台不同的机器上运行,而且只有一个最小的示例项目,我不知道是什么导致了这一切。
请帮我叠人
2021:请注意,您现在可以从 pypi 再次安装。您仍然需要允许 cors。
在 Twitter 上与 Miguel Grinberg 聊天后,我找到了设置方法。有几件事。 First 4.3 默认引入了 CORS 限制。节点客户端的 CORS headers 存在错误,因为节点不是浏览器。现在已经修复了。
但是,仅仅pip install python-socketio
还是不够的
您必须手动安装 python-enginio
的主分支,因为存在 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='*')
此 websocket 连接失败。有趣的是,这几天前还在工作。我将电子从 6 降级到 5.0.6 但这没有帮助。
服务器
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/node 运行 执行此操作时,我得到了与最初相同的错误加上一个关键错误:
因为它以前可以工作,现在它不能在 2 台不同的机器上运行,而且只有一个最小的示例项目,我不知道是什么导致了这一切。
请帮我叠人
2021:请注意,您现在可以从 pypi 再次安装。您仍然需要允许 cors。
在 Twitter 上与 Miguel Grinberg 聊天后,我找到了设置方法。有几件事。 First 4.3 默认引入了 CORS 限制。节点客户端的 CORS headers 存在错误,因为节点不是浏览器。现在已经修复了。
但是,仅仅pip install python-socketio
还是不够的
您必须手动安装 python-enginio
的主分支,因为存在 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='*')