码迷,mamicode.com
首页 > Web开发 > 详细

websocket实现简单的单聊

时间:2019-03-24 20:08:00      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:cat   pre   rom   fun   user   spl   lan   forever   tee   

技术图片
 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>
前端

 

websocket实现简单的单聊

标签:cat   pre   rom   fun   user   spl   lan   forever   tee   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!