python - 关于Flask-socketio和socketIO_client的使用问题。

 xy278372898162 发布于 2022-11-04 10:23

软件的目的是使用socketio 让多个程序进行通话。
以下是服务端的代码,使用的是Flask-socketio

#codeing=utf-8
from flask import Flask, render_template
from flask.ext.socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@socketio.on('message',namespace='/msg')
def on_connect(message):
    emit('my response', {'data': 'Connected'+message})

if __name__ == '__main__':
        socketio.run(app)

启动服务器的命令如下:

gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker app:app --bind=0.0.0.0:5001

下面是客户端的代码,使用了socketIO_client.

from socketIO_client import SocketIO, BaseNamespace

def on_response(*args):
    print('on_response', args)

socket = SocketIO('bt.gg',5001)
chat = socket.define(BaseNamespace, '/msg')
chat.emit('message')
chat.on('my response', on_response)

在运行过程中,发现服务端一直在提示错误。

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 508, in handle_one_response
    self.run_application()
  File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 494, in run_application
    self.result = self.application(self.environ, self.start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask_socketio/__init__.py", line 27, in __call__
    raise RuntimeError('You need to use a gevent-socketio server.')
RuntimeError: You need to use a gevent-socketio server.
{'GATEWAY_INTERFACE': 'CGI/1.1',
 'HTTP_ACCEPT': '*/*',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_HOST': 'bt.gg:8800',
 'HTTP_USER_AGENT': 'python-requests/2.7.0 CPython/2.7.10 Windows/8',
 'PATH_INFO': '/socket.io/',
 'QUERY_STRING': 'transport=polling&EIO=3&t=1441511864251-0',
 'RAW_URI': '/socket.io/?transport=polling&EIO=3&t=1441511864251-0',
 'REMOTE_ADDR': '180.175.170.224',
 'REMOTE_PORT': '61238',
 'REQUEST_METHOD': 'GET',
 'SCRIPT_NAME': '',
 'SERVER_NAME': 'server',
 'SERVER_PORT': '8800',
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'SERVER_SOFTWARE': 'gevent/1.0 Python/2.7',
 'gunicorn.sock': ,
 'wsgi.errors': ', mode 'w' at 0x7feebe56a1e0>,
 'wsgi.input': ,
 'wsgi.multiprocess': False,
 'wsgi.multithread': False,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)} failed with RuntimeError

求各位朋友看一下,我写的代码问题出在哪?

1 个回答
  • Flask-socketio 是使用的 0.x版本的socketio 协议
    socketIO_client是使用的 1.x版本的socketio 协议

    因为协议的版本问题,导致这两个不兼容。

    2022-11-12 01:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有