栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

flask+geventwebsocket实现群体、单体聊天室

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

flask+geventwebsocket实现群体、单体聊天室

思路:
  1. 将websocket请求以 {name:socket} 存储到字典或mongodb,redis中;
  2. while True建立通信循环
  3. socket.receive()收消息
  4. socket.send()发消息
  5. json模块序列化返回的数据
  6. 服务端根据客户端消息判断聊天类型,并选择socket对象
  7. 客户端根据服务端的消息将信息展示在不同区域
代码 python:
from flask import Flask
from geventwebsocket.handler import WebSocketHandler
from geventwebsocket.server import WSGIServer
from flask import request
from geventwebsocket.websocket import WebSocket  # 语法提示
from flask import render_template
from json import loads, dumps

app = Flask(__name__, template_folder='./templates')

socket_dic = {

}


@app.route('/ws/')
def ws(username):
    sock = request.environ.get('wsgi.websocket', None)  # type:WebSocket
    # 不是ws协议上来的协议取不到wsgi.websocket

    if not sock:
        return '请使用ws链接'
    socket_dic[username] = sock
    print(socket_dic)
    while True:
        msg = sock.receive()
        if msg:
            msg_dic = loads(msg)
            to = msg_dic.get('to')
            data = msg_dic.get('data')
            host = msg_dic.get('host')
            if to:
                if to in socket_dic.keys():
                    socket_dic[to].send(dumps({'host': host, 'data': data, 'to': to}))
                    sock.send(dumps({'host': host, 'data': data, 'to': to}))
                else:
                    continue
            else:
                for v in socket_dic.values():
                    v.send(dumps({'host': host, 'data': data, 'to': to}))


@app.route('/')
def login():
    return render_template('client.html')


if __name__ == '__main__':
    http_server = WSGIServer(('127.0.0.1', 5000), app, handler_class=WebSocketHandler)
    http_server.serve_forever()
html



    
    client
    
    
    
    



{# 登录模块 #}

欢迎登录九聊!

username:

{# 聊天信息显示模块 #}
效果演示



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号