博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用flask_socketio实现客户端间即时通信
阅读量:4878 次
发布时间:2019-06-11

本文共 1455 字,大约阅读时间需要 4 分钟。

前期没有来得及好好总结,现在复习总结一下:

Socket.IO 背后主要的思想是你可以发送和接收想要的任何事件,携带你想要的任何数据。任何可以编码为 JSON 的对象都可以做到,并且也支持二进制数据。

1.Express 初始化 app 作为功能处理器,你可以将它传给 HTTP 服务器。

2.定义一个路由处理器 / ,当我们访问网站主页时就会调用这个处理器。

3.HTTP 服务器监听端口 3000。

通过传递 http(HTTP 服务器)对象初始化了一个 socket.io 的新实例。然后为到来的 socket 监听 connection 事件,并且输入日志到控制台。

这将加载 socket.io-client,创建全局变量 io,并且连接

 下一个目标是我们从服务器发送事件给其他用户。

为了发送事件给所有人,Socket.IO 给我们提供了 io.emit:

io.emit('some event', { for: 'everyone' });

如果你想发送一个确定 socket 的消息给所有人,我们有 broadcast 标识:

io.on('connection', function(socket){  socket.broadcast.emit('hi');});

 下面是参考:

    关于flask_socketio的入门可以看我的上一篇博客

  用socketio实现即时通信十分简单,只需要客户端发送用户输入的信息到后端,后端再将此信息广播到所有连接到此命名域的客户端就可以了。

from flask import Flask, render_templatefrom flask_socketio import SocketIO,emitapp = Flask(__name__)app.config['SECRET_KEY'] = 'secret!'socketio = SocketIO(app)@app.route('/')def index():    return render_template('index.html')@socketio.on('imessage', namespace='/test_conn')def test_message(message):    emit('message',//后端广播信息的事件名最好跟前端发送信息的事件名不一样         {
'data': message['data']}, broadcast=True)if __name__ == '__main__': socketio.run(app, debug=True)

  关键就是要在emit中加broadcast=True这一项,如果不加,只有发送信息的客户端能收到消息

    

Receive:

  打开两个网页都连接到http://127.0.0.1:5000/,测试一下,一个网页发送的信息在另一个网页也可以及时收到。一个简陋的多人聊天系统完成了:)

 
 
 
 

转载于:https://www.cnblogs.com/Dark-fire-liehuo/p/10052401.html

你可能感兴趣的文章
Python学习(四)数据结构 —— str
查看>>
AndroidStudio检测不到genymotion虚拟设备
查看>>
volatile关键字
查看>>
Firebug入门指南
查看>>
Kotlin偏好设置
查看>>
PhpStorm一次性折叠所有函数或者方法
查看>>
[HEOI2014]大工程
查看>>
Windows 下 Oracle 10g 手工创建数据库
查看>>
《设计模式之禅》学习笔记(十二)
查看>>
#C++PrimerPlus# Chapter10_Exersice8_v1.0
查看>>
C程序模拟实现银行家算法
查看>>
IDEA Rest Client使用
查看>>
洛谷1423 小玉在游泳
查看>>
java中split()特殊符号"." "|" "*" "\" "]"
查看>>
Java字节流与字符流的区别
查看>>
Reactive Extensions介绍
查看>>
【Language】Popular Javascript Convention on Github
查看>>
oracle spatial 创建空间字段索引 创建字段索引 完善SQL语句实例二
查看>>
[15] 星星(Star)图形的生成算法
查看>>
三体运动的程序模拟
查看>>