从socketIo python发出事件

时间:2016-09-16 11:07:20

标签: python node.js socket.io chat real-time

我在使用Python开发socket.io时遇到困难。我正在使用此lib

我使用this android部分和lib示例运行了一个聊天应用程序。我想从一个单独的文件中触发服务器端的事件。这是我的代码。

import socketio
import eventlet
from flask import Flask, render_template

sio = socketio.Server(logger=True, async_handlers= True)
app = Flask(__name__)

eventlet.monkey_patch()

@sio.on('connect', namespace='/d')
def connect(sid, environ):
   print('connect ', sid)
   pass

@sio.on('messaget', namespace='/d')
def messaget(sid, data):
    print('message ', data)
    # sio.emit('messaget', data, namespace='/d')
    # sendmsg("YO YO")

@sio.on('disconnect', namespace='/d')
def disconnect(sid):
   print('disconnect ', sid)

def start_socket(app):
   # wrap Flask application with socketio's middleware
   app = socketio.Middleware(sio, app)
   eventlet.wsgi.server(eventlet.listen(('', 8000)), app)

def sendmsg(data):
    my_data= { 'text': data };
    sio.emit('messaget', my_data, namespace='/d')

start_socket(app)

我正在从另一个python文件中调用sendmsg("dipen")。我正在向所有[/ d] 发送日志发出事件“messaget”但是android应用程序没有收到任何消息。如果事件是从Android应用程序发出的,那就有用了。我尝试使用NodeJs代码并且它适用于NodeJs代码,因此我非常确定我的Python代码中存在错误。希望有人能救我脱离这一点。

1 个答案:

答案 0 :(得分:0)

从Android客户端发送消息。你的Python代码是否得到它?如果没有,请检查您是否已连接到同一名称空间。