首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python-socketio上发送消息

如何在python-socketio上发送消息
EN

Stack Overflow用户
提问于 2019-09-11 12:33:56
回答 2查看 8.8K关注 0票数 2

API文档(https://python-socketio.readthedocs.io/en/latest/intro.html)提供了服务器和客户端的示例。但是如果您运行它们,您将不会开始消息传递。我不知道该怎么安排。

如何设置消息传递,以便通过print函数输出它们的身体?

client.py

代码语言:javascript
复制
import socketio

sio = socketio.Client()


@sio.event
def connect():
    print('connection established')


@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})


@sio.event
def disconnect():
    print('disconnected from server')


sio.connect('http://localhost:5000')
sio.wait()

server.py

代码语言:javascript
复制
import eventlet
import socketio


sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files={
    '/': {'content_type': 'text/html', 'filename': 'index.html'}
})


@sio.event
def connect(sid, environ):
    print('connect ', sid)
    my_message(sid, {'Test': 'Message'})


@sio.event
def my_message(sid, data):
    sio.send(data)
    print('Send message ', data)


@sio.event
def disconnect(sid):
    print('disconnect ', sid)


if __name__ == '__main__':
    eventlet.wsgi.server(eventlet.listen(('', 5000)), app)

微量client.py

代码语言:javascript
复制
venv) user@debian:~/work/self_prj/socket_io$ python3 client.py
connection established

微量server.py

代码语言:javascript
复制
(13043) wsgi starting up on http://0.0.0.0:5000
(13043) accepted ('127.0.0.1', 50352)
127.0.0.1 - - [11/Sep/2019 15:24:08] "GET /socket.io/?transport=polling&EIO=3&t=1568204648.5529237 HTTP/1.1" 200 385 0.000619
connect  cff05ec678794128a6541f33bf3ef6dd
Send message  {'Test': 'Message'}
(13043) accepted ('127.0.0.1', 50356)
127.0.0.1 - - [11/Sep/2019 15:24:08] "POST /socket.io/?transport=polling&EIO=3&sid=cff05ec678794128a6541f33bf3ef6dd HTTP/1.1" 200 167 0.000148
127.0.0.1 - - [11/Sep/2019 15:24:08] "GET /socket.io/?transport=polling&EIO=3&sid=cff05ec678794128a6541f33bf3ef6dd&t=1568204648.5590577 HTTP/1.1" 200 183 0.002194
127.0.0.1 - - [11/Sep/2019 15:24:33] "POST /socket.io/?transport=polling&EIO=3&sid=cff05ec678794128a6541f33bf3ef6dd HTTP/1.1" 200 167 0.000372
127.0.0.1 - - [11/Sep/2019 15:24:33] "GET /socket.io/?transport=polling&EIO=3&sid=cff05ec678794128a6541f33bf3ef6dd&t=1568204648.5659044 HTTP/1.1" 200 183 24.994966
127.0.0.1 - - [11/Sep/2019 15:24:58] "POST /socket.io/?transport=polling&EIO=3&sid=cff05ec678794128a6541f33bf3ef6dd HTTP/1.1" 200 167 0.000355
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-11 12:42:59

您建立了连接,但没有打印消息。在客户端,

而不是这样:

代码语言:javascript
复制
@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})

用这个:

代码语言:javascript
复制
@sio.event
def my_message(data):
    print('message received with ', data)
    sio.emit('my response', {'response': 'my response'})
票数 2
EN

Stack Overflow用户

发布于 2020-10-01 16:22:52

我最近建立了一个python系统,用于本地服务器和AWS服务器之间的通信。在AWS上,我使用了作为服务器,因为我想提供网页访问,而用于客户机。

我不确定做这件事的首选方法,但我使用了(在服务器上)

代码语言:javascript
复制
@sio.on('my_new_message')
def process_message(data):
    logging.warning("Data received: "+data)

然后在客户端:

代码语言:javascript
复制
sio.emit('my_new_message', "Test message")

关键是发出引用服务器上的处理程序中给出的名称(如果客户机上也有处理程序,则相反)。通过这种方式,您可以调用任何您想要的处理程序,只要您使用emit引用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57889303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档