websocket实现群聊
server # @File: 群聊
from flask import Flask, render_template, request
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
from geventwebsocket.websocket import WebSocket app = Flask(__name__)
user_socket_list = [] @app.route('/ws')
def ws():
# 一个用户的长链接wsgi.websocket
user_socket = request.environ.get("wsgi.websocket") # type:WebSocket
if user_socket:
# 将每个链接存入列表中
user_socket_list.append(user_socket)
print(len(user_socket_list), user_socket_list)
while 1:
msg = user_socket.receive()
print(msg)
for usocket in user_socket_list:
if user_socket == usocket:
continue
try:
usocket.send(msg)
except:
continue @app.route('/')
def index():
return render_template("many_person.html") if __name__ == '__main__':
http_server = WSGIServer(("0.0.0.0", 7000), app, handler_class=WebSocketHandler)
http_server.serve_forever()
many_person.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <p>发送内容:<input type="text" id="message"><button onclick="send_msg()">发送</button></p>
<div id="msg_list" style="width: 500px"> </div> </body>
<script type="application/javascript"> var ws = new WebSocket("ws://192.168.12.41:7000/ws");
ws.onmessage = function (ws_status) {
console.log(ws_status.data);
var ptag = document.createElement("p");
ptag.innerText = ws_status.data;
document.getElementById("msg_list").appendChild(ptag)
};
function send_msg() {
var msg = document.getElementById("message").value;
var ptag = document.createElement("p");
ptag.style.cssText = "text-align: right";
ptag.innerText = msg;
document.getElementById("msg_list").appendChild(ptag);
ws.send(msg);
}
</script>
</html>
websocket实现群聊的更多相关文章
- 一例完整的websocket实现群聊demo
前言 业余我都会花一些时间在tcp.http和websocket等领域的学习,现在觉得有点收获,所以把一个基于websocket的群聊功能的例子提供给大家玩玩.当然这是一个很完整的例子,包括webso ...
- Websocket实现群聊、单聊
Websocket 使用的第三方模块:gevent-websocket 群聊 ws群聊.py中的内容 from flask import Flask, request, render_template ...
- Flask 实现 WebSocket 通讯---群聊和私聊
一.WebSocket介绍 WebSocket是一种在单个TCP连接实现了服务端和客户端进行双向文本或二进制数据通信的一种通信的协议. WebSocket使得客户端和服务器之间的数据交换变得更加简单, ...
- websocket实现群聊和单聊(转)
昨日内容回顾 1.Flask路由 1.endpoint="user" # 反向url地址 2.url_address = url_for("user") 3.m ...
- Android中脱离WebView使用WebSocket实现群聊和推送功能
WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能.更多知识参考 ...
- Flask+WebSocket实现群聊与单聊功能
在开始我们的程序代码之前,先来了解一下相关的基础知识: 1.什么是websocket? (1)WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket ...
- WebSocket群聊与单聊
一 . WebSocket实现群聊 py文件代码 # py文件 from flask import Flask, render_template, request from geventwebsock ...
- websocket(二)--简单实现网页版群聊
websocket可以实现服务端的消息推送,而不必在客户端轮询,大大的节省的资源,对于实时通讯来说简直是个大喜讯. 在上一篇文章中介绍了协议握手,这篇文章将通过实现简单的群聊来帮助进一步了解webso ...
- WebSocket刨根问底(三)之群聊
前两篇文章[WebSocket刨根问底(一)][WebSocket刨根问底(二)]我们介绍了WebSocket的一些基本理论,以及一个简单的案例,那么今天继续,我们来看一个简单的群聊的案例,来进一步了 ...
随机推荐
- Django-权限信息自定义标签
自定义权限标签: import re from django.template import Library from django.conf import settings register = L ...
- libusb 源码阅读
libusb_init(NULL), 如果传入一个NULL, 则libusb 内部会有一个 usbi_default_context 变量在内部保存上下文. 这样以后调用 libusb 函数时可以不指 ...
- delphi中的HOOK [转贴]
按事件分类,有如下的几种常用类型的钩子: 1)键盘钩子可以监视各种键盘消息. 2)鼠标钩子可以监视各种鼠标消息. 3)外壳钩子可以监视各种Shell事件消息. 4)日志钩子可以记录从系统消息队列中取出 ...
- SELECT INSTR(120,0000); 真
sql 排故 SELECT INSTR(120,0000); 真
- hadoop-client
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> ...
- C# 事件处理与自定义事件
http://blog.csdn.net/cyp403/article/details/1514023 图一 ...
- Java面试手写代码题
1.栈实现 2.Iterator实现 3.单例 4.多线和控制(暂停,恢复,停止) 5.生产者消费者
- 浅谈js执行机制
关于js执行机制,老早之前就一直想写篇文章做个总结,因为和js执行顺序的面试题碰到的特别多,每次碰到总是会去网上查,没有系统地总结,搞得每次碰到都是似懂非懂的感觉,这篇文章就系统的总结一下js执行机制 ...
- js中return的作用
1.终止函数的继续运行. 当遇到if…… else是.若出现return,就会出现终止运行,不会继续做出判断 <html> <head> <title>return ...
- js截取小数点后面2位
1.substr var str = "Hello world!"; document.write(str.substr(3)); 输出:lo world! var str = & ...