2016-09-16 50 views
1

我被困在与Python的socket.io开发。我正在使用此lib从socketIo发射事件python

我有一个使用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代码中有什么错误。希望有人能救我。

+0

你能分享你的客户代码的相关部分吗? – Miguel

+0

@Miguel我从这个链接使用示例 - https://github.com/sreejesh79/android-socket.io-server-demo/blob/master/index.js –

+0

你指着我一个JavaScript客户端代码。你不是说你对Android客户端有问题吗? – Miguel

回答

0

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

+0

是的,它获取消息,我也可以从该线程发出一个事件。但它不是从单独的线程(文件) –