关于Flask-socketio和socketIO_client的使用问题。
软件的目的是使用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': <socket at 0x7feeba8abe90 fileno=12 sock=103.242.133.124:8800 peer=180.175.170.224:61238>,
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7feebe56a1e0>,
'wsgi.input': <gevent.pywsgi.Input object at 0x7feeba84f990>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)} failed with RuntimeError
求各位朋友看一下,我写的代码问题出在哪?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Flask-socketio 是使用的 0.x版本的socketio 协议
socketIO_client是使用的 1.x版本的socketio 协议
因为协议的版本问题,导致这两个不兼容。