错误的socketio库:“ socketio.exceptions.ConnectionError:服务器拒绝连接”

时间:2019-07-20 03:19:28

标签: python socket.io

我试图从服务器外部的任何地方连接到在NodeJS中配置的套接字,如果我可以连接到套接字,但是当尝试从同一服务器连接时,它显示消息:“ socketio.exceptions。 ConnectionError:服务器拒绝了连接“

我配置的端口是8085 我尝试添加: -http://localhost:8085 -https://localhost:8085 -http://127.0.0.1:8085 -https://127.0.0.1:8085 -*:8085 -192.168.4.7:8085 -PublicIP:8085

import socketio
sio = socketio.Client()
sio.connect('https://localhost:8085')

当我从服务器外部连接时,它允许我与套接字进行交互。问题是本地服务器,因为它立即显示“连接被拒绝”消息

3 个答案:

答案 0 :(得分:1)

我用origins参数求解:

const io = require('socket.io')(server,{pingTimeout: 0, pingInterval: 500, origins: '*:*'});

答案 1 :(得分:1)

我也遇到了同样的问题。

但是当查看 scoketio 的 docs 时,它表明有两个或多个实例正在运行。 server sideclient side 上的其他人。

让服务器文件运行服务器并用客户端文件连接到服务器。下面给出了一个例子。

server.py

# using eventlet, visit the docs for more info
import eventlet
import socketio

sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files={
    '/': {'content_type': 'text/html', 'filename': 'index.html'}
})

@sio.event
def connect(sid, environ):
    print('connect ', sid)

@sio.event
def my_message(sid, data):
    print('message ', data)

@sio.event
def disconnect(sid):
    print('disconnect ', sid)

if __name__ == '__main__':
    # change the 5000 to any port you want
    # leave the 'localhost' empty string to run on your IP
    eventlet.wsgi.server(eventlet.listen(('localhost', 5000)), app)

client.py

import socketio

sio = socketio.Client()

@sio.event
def connect():
    print('connection established')

@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})

@sio.event
def disconnect():
    print('disconnected from server')

sio.connect('http://localhost:5000/')
sio.wait()

然后,先运行 server.py

C:\User\new>py server.py
(12080) wsgi starting up on http://127.0.0.1:5000

然后运行client.py

C:\User\new>py clinet.py
connection established

并且您的套接字文件正在运行。

如果您已经体验socket.io 中的javascript,您对这个过程感到轻松。因为这是入门和学习的完美且最简单的方式socket.io

答案 2 :(得分:0)

遇到同样的事情。对我来说,这在Windows 10中似乎是一个问题:它需要

sio.connect('http://192.168.178.18:8080')

显示您计算机的确切IP地址。不是'localhost'或其他任何东西。然后连接顺利。