代码之家  ›  专栏  ›  技术社区  ›  Deepika Kapoor

使用Flask socketio和socketio客户端

  •  6
  • Deepika Kapoor  · 技术社区  · 8 年前

    我目前正在尝试了解套接字是如何工作的。我正在使用Flask socketio和python socketio客户端,并运行了一个基本示例。以下是我到目前为止所做的

    应用程序。py公司

    from flask import Flask, render_template
    from flask_socketio import SocketIO, emit
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'secret!'
    socketio = SocketIO(app)
    
    @socketio.on('aaa')
    def test_connect():
        print("Welcome, aaa received")
        emit('aaa_response', {'data': 'Server'})
    
    if __name__ == '__main__':
        socketio.run(app, port=8000)
    

    客户py公司

    from socketIO_client import SocketIO, LoggingNamespace
    
    def on_aaa_response(args):
        print('on_aaa_response', args['data'])
    
    socketIO = SocketIO('localhost', 8000, LoggingNamespace)
    socketIO.on('aaa_response', on_aaa_response)
    socketIO.emit('aaa')
    socketIO.wait(seconds=1)
    

    当我运行 client.py . 我确实看到服务器正在打印 "Welcome, aaa recived" 虽然我不知道我做错了什么,如果需要的话,这是我的日志

    错误日志

    Exception in thread Thread-1:
    Traceback (most recent call last):
      File "c:\users\dj\appdata\local\programs\python\python36\Lib\threading.py", li
    ne 916, in _bootstrap_inner
        self.run()
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\heartbeats.py", line 27, in run
        self._send_heartbeat()
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 203, in _ping
        engineIO_packet_type, engineIO_packet_data)
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\transports.py", line 109, in send_packet
        assert response.content == b'ok'
    AssertionError
    
    Traceback (most recent call last):
      File "demo.py", line 8, in <module>
        socketIO.emit('aaa')
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 424, in emit
        self._message(str(socketIO_packet_type) + socketIO_packet_data)
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 33, in wrap
        return f(*args, **kw)
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 219, in _message
        transport.send_packet(engineIO_packet_type, engineIO_packet_data)
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\transports.py", line 109, in send_packet
        assert response.content == b'ok'
    AssertionError
    Exception ignored in: <bound method SocketIO.__del__ of <socketIO_client.SocketI
    O object at 0x00000028079DC320>>
    Traceback (most recent call last):
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 364, in __del__
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 400, in disconnect
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\__init__.py", line 193, in _close
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\transports.py", line 108, in send_packet
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
    lient\transports.py", line 191, in get_response
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
    essions.py", line 555, in post
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
    essions.py", line 494, in request
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
    essions.py", line 419, in prepare_request
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\c
    ookies.py", line 537, in merge_cookies
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\c
    ookies.py", line 353, in update
      File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\copy.py", line 96, in co
    py
    ImportError: sys.meta_path is None, Python is likely shutting down
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   Miguel Grinberg    8 年前

    根据堆栈跟踪,我无法识别 socketIO-client 您正在使用的包。它似乎不是当前版本。

    我已经在这里测试了您的两个应用程序,它们似乎与客户端的0.7.2版本配合得很好。我建议你跑 pip install --upgrade socketIO-client==0.7.2 然后再试一次。