从socketIo python发出事件
Posted
技术标签:
【中文标题】从socketIo python发出事件【英文标题】:Emitting event from socketIo python 【发布时间】:2017-01-24 14:16:12 【问题描述】:我一直在用 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")
。我收到一个日志向所有人发送事件“messaget”[/d],但 android 应用程序没有收到任何消息。如果事件是从 Android 应用程序发出的,它就会起作用。我尝试了 NodeJs 代码,它适用于 NodeJs 代码,所以我很确定我的 Python 代码有问题。希望有人能把我从这件事中拯救出来。
【问题讨论】:
你能分享你的客户端代码的相关部分吗? @Miguel 我正在使用此链接中的示例 - github.com/sreejesh79/android-socket.io-server-demo/blob/master/… 你指向我的 javascript 客户端代码。你不是说安卓客户端有问题吗? @Miguel 抱歉,这是 NodeJs 代码的链接。请参考这个-github.com/sreejesh79/android-socket.io-demo 您上面的服务器使用/d
命名空间。你能指出我在 Android 应用程序中的哪个位置声明或使用了这个命名空间吗?
【参考方案1】:
从 Android 客户端发送消息。你的 Python 代码明白了吗?如果没有,请检查您是否已连接到相同的命名空间。
【讨论】:
是的,它会收到消息,我也可以从该线程发出事件。但它不适用于单独的线程(文件)以上是关于从socketIo python发出事件的主要内容,如果未能解决你的问题,请参考以下文章
以设定的时间间隔从 flask_socketio 服务器发出事件
使用 pytest 测试 flask-socketio 服务器发出的事件时出错