关于flask_socketio的入门可以看我的上一篇博客《使用flask_socketio实现服务端向客户端定时推送》

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

from flask import Flask, render_template
from 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这一项,如果不加,只有发送信息的客户端能收到消息

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title><script type="text/javascript" src="//code.jquery.com/jquery-1.4.2.min.js"></script><script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.min.js"></script><script type="text/javascript">$(document).ready(function() {namespace = '/test_conn';var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);       //连接后发送日志socket.on('connect', function(){console.log('connected')});       //点击发送时将text框的内容发送到后端$('form#emit').submit(function(event) {socket.emit('imessage', {data: $('#emit_data').val()});return false;});        //接收后端广播的信息socket.on('message', function(msg) {$('#log').append('<br>' + $('<div/>').text(msg.data).html());});});</script>
</head>
<body><form id="emit" method="POST" action='#'><input type="text" name="emit_data" id="emit_data" placeholder="Message"><input type="submit" value="发送"></form><h2>Receive:</h2><div id="log"></div>
</body>
</html>

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

转载于:https://www.cnblogs.com/luozx207/p/9719597.html

使用flask_socketio实现客户端间即时通信相关推荐

  1. Java的TCP/UDP网络编程+多线程实现服务器端与客户端间的通信

    写在前面: Java为网络编程提供了丰富的库,我们能通过调用Socket套接字的方法实现服务器与客户端的双通信. 注意点: 需要注意的是端口的对应,端口可以理解为窗户,服务器只能通过某个端口(窗户)与 ...

  2. android 两个客户端间的通信(Socket通信)

    2019独角兽企业重金招聘Python工程师标准>>> 客户端之间通信:    实际上两个客户端不能直接通信,要借助服务器来做为中转站,才能实现双方通信. 一个客户端发送数据到服务器 ...

  3. 一种客户端即时通信数据的加密和解密方法

    一种客户端即时通信数据的加密和解密方法  摘要 本发明适用于即时通信领域,提供了一种客户端即时通信数据的加密和解密方法,所述方法包括以下步骤:A.客户端加密本地保存的即时通信数据,并将数据加密密钥上传 ...

  4. 基于XMPP协议的Android即时通信系

    2019独角兽企业重金招聘Python工程师标准>>> 以前做过一个基于XMPP协议的聊天社交软件,总结了一下.发出来. 设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过 ...

  5. 基于XMPP的即时通信

    一.Openfire服务器和Spark客户端的安装 1.在下列下载地址下载Openfire和Spark http://www.igniterealtime.org/downloads/index.js ...

  6. 一种即时通信数据传输方法、客户端、服务器及系统

    一种即时通信数据传输方法.客户端.服务器及系统  摘要 本发明实施例提供一种即时通信数据传输方法.客户端.服务器及系统,其中,方法可以包括:向服务器发送传输控制协议TCP连接建立请求,建立与所述服务器 ...

  7. WebSocket 实现 Web 端即时通信

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:牛人 20000 字的 Spring Cloud 总结,太硬核了~ 前言 WebSocket 是HTML5开始提 ...

  8. 前端如何实现即时通信?

    一.ajax短轮询 短轮询的原理很简单,每隔⼀段时间客户端就发出⼀个请求,去获取服务器最新的数据,⼀定程度上模拟实现了即时通讯. 1.优点:兼容性强,实现非常简单. 2.延迟性高,非常消耗请求资源,影 ...

  9. android之IM即时通信原理

    即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议.前 者是以数据流的形式,将传输数 ...

最新文章

  1. php 检测密码,php如何检测账号密码是否匹配
  2. 2020 ccf推荐中文期刊_CCF推荐国际学术期刊
  3. 如何让自己的写的程序在阿里云一直运行
  4. 仔细看看_仔细看看,您会发现需要改进的地方
  5. mysql 命令行 设置同步_MySQL同步(二) 设置同步
  6. 使用trilium搭建专属知识库
  7. vue-cli项目中单文件组件引入bootstrap.js异常的解决方案
  8. Oracle 认证下载
  9. 该模型是内置式的MTPA控制,速度环的输出为给定转矩,然后方式1通过求解MTPA方程得到dq给定电流
  10. 随滚动条移动的QQ在线客服代码
  11. linux获取脚本文件路径
  12. 论文分享|高精度面结构光三维测量方法研究
  13. ORCAD元件的批量替换与更新
  14. ios uri正则表达式_众果搜的博客
  15. org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  16. html六边形空心,六边形空心预制块模具基本知识
  17. 第 13 周 / 编程题 - 新兵队列训练(选做)
  18. 【机器学习】Goldstein-Armijo line-search
  19. find和grep区别
  20. 机器学习基础__02__L1L2范数在机器学习中应用

热门文章

  1. 6/12 Sprint2 看板和燃尽图
  2. 数据库的数据类型及运算符
  3. 神马是代码简单的cmd模式,这就是!
  4. 【英语天天读】第一场雪
  5. arcgis server for .NET学习转载5
  6. Linux 下杀毒软件 clamav 的安装和使用
  7. Java DSL简介(收集整理)
  8. Go语言开发环境配置
  9. Kubernetes - - k8s - v1.12.3 OpenLDAP统一认证
  10. 再利用Chakra引擎绕过CFG