KZKY memo

自分用メモ.

python: socketio-client

jsからだけではなく,pythonからsocketio serverにリクエストしたい.

1. python-socketio-client
2. python-socketio-sever
3. js

という順にメッセージを送りたい

環境

Install

sudo apt-get install python-socketio-client
sudo pip install flask-socketio

基本

  • namespaceとevent nameはちゃんときめること

Server (Flask-SocketIO)

#!/usr/bin/env python

from flask import Flask, render_template
from flask.ext.socketio import SocketIO, emit

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

event_name = "my_event"
namespace = "/my_namespace"

@socketio.on(event_name, namespace=namespace)
def test_message(message):
    print("called!")
    print("receive: ")
    print(message)
    #emit('my response', {'data': message['data']})

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

Client (Python socketio-client)

#!/usr/bin/env python

from socketIO_client import SocketIO, BaseNamespace

class MyNamespace(BaseNamespace):

    def on_aaa_response(self, *args):
        print('on_aaa_response', args)

socketIO = SocketIO('localhost', 5000)
namespace = "my_namespace"
event_name = "my_event"
my_namespace = socketIO.define(MyNamespace, "/my_namespace")

my_namespace.emit(event_name, {"message": "from python socketio-client"})
socketIO.wait(seconds=1)

結果

Client側のスクリプトを実行した時のServer側のログ

$ python socketio-server_sample.py
 * Running on http://127.0.0.1:5000/
called!
receive: 
{u'message': u'from python socketio-client'}

jsまで連携するにはFlask-SocketIOでJSに向けてemitすればいい.
namespame/eventnameはちゃんと定義しておくこと.