websocket实现后端消息即时推送

html前端

web.html文件

<html>
    <head>
        <title>websocket</title>
        <script type="text/javascript" src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
        <script type="text/javascript">
            var ws;
        $(function() {
            // 新建连接
            ws = new WebSocket("ws://localhost:5000/foobar");

            // 接受消息
            ws.onmessage = function(evt) {
                $("#placeholder").append('<p>' + evt.data + '</p>')
                // ws.send('收到消息')
            }
            // 建立连接
            ws.onopen = function(evt) {
                $('#status').html('<b>Connected</b>');
                ws.send('建立连接')
            };
            //错误
            ws.onerror = function(evt) {
                $('#status').html('<b>Error</b>');
            };
            //连接关闭
            ws.onclose = function(evt) {
                $('#status').html('<b>Closed</b>');
            }
        });
    </script>
    </head>
    <body>
        <h1>WebSocket 案例</h1>
        <div>连接状态</div>
        <div id="status"></div>
        <hr>
        <div id="placeholder"></div>
    </body>
</html>

flask后端代码:

from flask import Flask, request, render_template, abort
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
import time

web = Flask('web',__name__)
@web.route('/')
def index():
    return render_template('web.html')


@web.route('/foobar')
def echo():
    if request.environ.get('wsgi.websocket'):
        ws = request.environ['wsgi.websocket']  #websocket对象

        for i in range(10):  
            if not ws.closed:
            	# msg = ws.recive()  #接受消息
                time.sleep(1)
                ws.send('111')  #给前端发消息


if __name__ == '__main__':
    http_server = WSGIServer(('0.0.0.0',5000), web, handler_class=WebSocketHandler)  # web是Flask对象
    http_server.serve_forever()  # 启动服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket可以实现打字机效果。与Server-sent events(SSE)相比,WebSocket是一种全双工协议,可以在客户端和服务器之间进行实时的双向通信。在浏览器中,可以使用WebSocket库来实现WebSocket通信。通过WebSocket,可以轻松地实现打字机效果,即当服务器端有新消息时,可以将消息即时推送到客户端,并在客户端上显示出来。相比之下,Server-sent events默认支持断线重连,而WebSocket需要在前端进行额外的实现。因此,WebSocket实现打字机效果方面具有更好的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1](https://blog.csdn.net/zcxey2911/article/details/129395484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [incppect:在浏览器中检查C ++内存](https://download.csdn.net/download/weixin_42133680/18422827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值