websocket实现简单的单聊

 1 import json
 2
 3 from flask import Flask, request, render_template
 4
 5 from geventwebsocket.handler import WebSocketHandler
 6 from gevent.pywsgi import WSGIServer
 7 from geventwebsocket.websocket import WebSocket
 8
 9 app = Flask(__name__)
10
11 user_socket_dict = {}
12
13
14 @app.route(‘/conn_ws<suer>‘)
15 def ws_app(suer):
16     # print(request.environ)
17
18     user_socket = request.environ.get(‘wsgi.websocket‘)  # type: WebSocket
19     user_socket_dict[suer] = user_socket
20     print(len(user_socket_dict), list(user_socket_dict))
21     while True:
22         msg = user_socket.receive()
23         msg_dict = json.loads(msg)
24         to_user = msg_dict.get(‘to_user‘)
25         to_user_socket = user_socket_dict.get(to_user)
26         to_user_socket.send(msg)
27
28
29 @app.route(‘/index‘)
30 def index():
31     return render_template(‘my_dws.html‘)
32
33
34 if __name__ == ‘__main__‘:
35     http_serv = WSGIServer((‘0.0.0.0‘, 9527), app, handler_class=WebSocketHandler)
36
37     http_serv.serve_forever()

后端

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <p>
 9     <input type="text" id="nick">
10     <button onclick="login()">登录聊天</button>
11 </p>
12
13 发送给:<input type="text" id="to_user">
14 消息:<input type="text" id="send_str">
15 <button id="send_btn" onclick="send()">发送消息</button>
16
17 <p>
18
19 <div id="chat_list"></div>
20
21 </p>
22 </body>
23 <script type="application/javascript">
24     var ws = null;
25
26     function login() {
27         var nick = document.getElementById(‘nick‘).value;
28         ws = new WebSocket(‘ws://192.168.11.67:9527/conn_ws‘ + nick);
29         ws.onmessage = function (messageEvent) {
30             console.log(messageEvent.data);
31             var ptag = document.createElement(‘p‘);
32             var message = JSON.parse(messageEvent.data);
33
34             ptag.innerText = message.from_user + ‘:‘ + message.message;
35             document.getElementById(‘chat_list‘).appendChild(ptag);
36         };
37     }
38
39     function send() {
40         var message = document.getElementById(‘send_str‘).value;
41         var send_str = {
42             from_user: document.getElementById(‘nick‘).value,
43             to_user: document.getElementById(‘to_user‘).value,
44             message: message
45         };
46         var json_send_str = JSON.stringify(send_str);
47         ws.send(json_send_str);
48     }
49 </script>
50 </html>

前端

原文地址:https://www.cnblogs.com/zhao-peng-/p/10589936.html

时间: 2024-10-04 09:25:59

websocket实现简单的单聊的相关文章

spring websocket 和socketjs实现单聊群聊,广播的消息推送详解

spring websocket 和socketjs实现单聊群聊,广播的消息推送详解 WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据. 我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而

websocket实现简单的群聊

1 from flask import Flask, request, render_template 2 3 from geventwebsocket.handler import WebSocketHandler 4 from gevent.pywsgi import WSGIServer 5 from geventwebsocket.websocket import WebSocket 6 7 app = Flask(__name__) 8 9 user_socket_list = []

websocket 群聊,单聊,加密,解密

群聊 from flask import Flask, request, render_templatefrom geventwebsocket.handler import WebSocketHandlerfrom gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket app = Flask(__name__) # type:Flask user_socket_list = [] @app

websocket实现群聊和单聊(转)

昨日内容回顾 1.Flask路由 1.endpoint="user" # 反向url地址 2.url_address = url_for("user") 3.methods = ["GET","POST"] # 允许请求进入视图函数的方式 4.redirect_to # 在进入视图函数之前重定向 5./index/<nid> # 动态参数路由 <int:nid> def index(nid) 6.str

Websocket 单聊功能

单聊代码 import json from flask import Flask,request,render_template from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket app = Flask(__name__) user_socket_dict = {} @ap

SpringMVC+Mybatis框架整合源码 项目 下载 rest websocket html5 自定义表单

获取[下载地址]   [免费支持更新]三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块B 集成阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Dr

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。

上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户端推送消息.本篇就先不把业务搞复杂了,就默认现在两个用户都各自打开了对方的聊天窗口,那么聊天过程是这样的. 同理,B给A发消息也是这个流程,因为无论如何,A(ID)和B(ID)都会按照规则生成同一个组名.其中由于LayIM已经帮我们在客户端做好了发送消息并且将消息展示在面板上,所以我们要做的就是当接

环信即时通讯单聊集成,添加好友,实现单聊

前段时间由于项目需要,了解一下环信即时通讯,然后自己通过查资料写了一个基于环信的单聊demo,一下是源码,希望可以帮助到需要的小伙伴. 首先,我们要去环信官网注册账号,这个我就不多说了,注册完登录,创建应用,新建两个测试IM用户, 这里主要用到的是应用标示(Appkey) 好了,在环信官网下载对应的sdk,这个不多说了,最好下载一个文档,里面讲的很详细的. 好了,一下是源码 AppManager.java public class AppManager { private static Stac

基于flask 写的web_socket 单聊和群聊

群聊 from flask import Flask,request,render_template from geventwebsocket.handler import WebSocketHandler from gevent.pywsgi import WSGIServer from geventwebsocket.websocket import WebSocket app = Flask(__name__) user_socket_list = [] @app.route("/conn