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 = []
10
11
12 @app.route(‘/conn_ws‘)
13 def ws_app():
14     # print(request.environ)
15
16     user_socket = request.environ.get(‘wsgi.websocket‘)  # type: WebSocket
17     user_socket_list.append(user_socket)
18     print(len(user_socket_list), user_socket_list)
19     while True:
20         msg = user_socket.receive()
21         print(msg)
22         for i in user_socket_list:
23             i.send(msg)
24
25
26 @app.route(‘/index‘)
27 def index():
28     return render_template(‘my_qserv.html‘)
29
30
31 if __name__ == ‘__main__‘:
32     http_serv = WSGIServer((‘0.0.0.0‘, 9527), app, handler_class=WebSocketHandler)
33
34     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 <input type="text" id="send_str">
 9 <button id="send_btn" onclick="send()">发送消息</button>
10 <p>
11 <div id="chat_list">
12 </div>
13 </p>
14 </body>
15 <script type="application/javascript">
16     var ws = new WebSocket(‘ws://192.168.11.67:9527/conn_ws‘);
17     ws.onmessage = function (messageEvent) {
18         console.log(messageEvent.data);
19         var ptag = document.createElement(‘p‘);
20         ptag.innerText = messageEvent.data;
21         document.getElementById(‘chat_list‘).appendChild(ptag);
22     };
23     function send() {
24         var send_str = document.getElementById(‘send_str‘).value;
25         ws.send(send_str);
26     }
27 </script>
28 </html>

前端

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

时间: 2024-10-17 12:13:48

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

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

Linux基础——socket实现简单的群聊程序

首先,我们需要实现数据结构,当有用户连接时,我们将该用户的IP.连接的端口号等保存到一个链表中, 当我们发送消息时,遍历链表,将该消息发送给所有已上线的用户. 当用户下线时,我们将该用户从链表中删除. 服务器实现代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <sys/socket.h> 5 #include <sys/stat.h>

Java Socket通信实现私聊、群聊

前言 闲言少叙,上代码! 代码编写 server服务端 /** * 服务端 */ public class Server { private static ServerSocket server = null; private static Socket ss = null; /** * 客户端集合 */ private static Map<String, ServerThread> serverThreadMap = new HashMap<String, ServerThread&

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

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

Swoole实现基于WebSocket的群聊私聊

本文属于入门级文章,大佬们可以绕过啦.如题,本文会实现一个基于Swoole的websocket聊天室(可以群聊,也可以私聊,具体还需要看数据结构的设计). 搭建Swoole环境 通过包管理工具 # 安装依赖包 $ sudo apt-get install libpcre3 libpcre3-dev # 安装swoole $ pecl install swoole # 添加extension拓展 $ echo extension=swoole.so > /etc/php5/cli/conf.d/s

Flask 实现 WebSocket 通讯---群聊和私聊

一.WebSocket介绍 WebSocket是一种在单个TCP连接实现了服务端和客户端进行双向文本或二进制数据通信的一种通信的协议. WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输. 一次请求 - 服务器收到请求 开始和客户端握手 - 保持长连接 - 数据实时 - 连接永远保持 优点:长连接 并且不影响 收发请求 缺点:连接保

Socket通信 简单实现私聊、群聊(dos命令下)

很久以前的一个Demo,这里服务器只做转发功能,根据ID地址和端口号来标识身份,群聊和私聊只是简单实现, 服务器代码如下: import java.util.*; import java.io.*; import java.net.*; public class Server extends Thread { private static Vector<Socket> vecClient = new Vector<Socket>(); private PrintWriter out

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