首页 > 其他分享 >tronado websocket

tronado websocket

时间:2024-09-11 16:15:17浏览次数:1  
标签:__ ioloop websocket self tronado import message

server代码:

from flask import Flask
from flask_cors import CORS
from tornado import websocket, ioloop, web
from tornado.web import FallbackHandler
from tornado.wsgi import WSGIContainer

from apps.monitor import init_app
# from apps.utils import NumpyJSONProvider
from apps.visualization.views import bp as visualization_bp

# from apps.visualization.websocket import EchoWebSocket

# Flask.json_provider_class = NumpyJSONProvider

app = Flask(__name__)
CORS(app)
init_app(app)

app.register_blueprint(visualization_bp)


class EchoWebSocket(websocket.WebSocketHandler):
    """tornado websocket class"""

    connections = set()

    def open(self):
        print(f"A client connected.{self}")
        self.connections.add(self)

    def on_message(self, message):
        print(message)
        self.write_message("You said: " + message)

    def on_close(self):
        print(f"A client disconnected.{self}")
        self.connections.remove(self)

     @classmethod
    def broadcast(cls, message):
        """broadcast message"""
        for client in cls.connections:
            client.write_message(message)


if __name__ == "__main__":
    server = web.Application(
        [
            (r"/ws", EchoWebSocket),
            (r".*", FallbackHandler, dict(fallback=WSGIContainer(app))),  # 用tronado代理flask
        ]
    )
    server.listen(65500)
    ioloop.IOLoop.current().start()

client 代码:

import tornado
from tornado.websocket import websocket_connect


class WSClient(object):

    def __init__(self, url):
        self.url = url
        self.ioloop = tornado.ioloop.IOLoop.current()

    def start(self):
        websocket_connect(
            self.url,
            # self.ioloop,
            callback=self.on_connected,
            on_message_callback=self.on_message)
        self.ioloop.start()

        def on_connected(self, f):
        try:
            conn = f.result()
            conn.write_message("hello")
        except Exception as e:
            print(str(e))
            self.ioloop.stop()

    def on_message(self, msg):
        print('receive message: ', msg)
        if msg.endswith("hello"):
            self.ioloop.stop()


if __name__=='__main__':
    wsc = WSClient('ws://127.0.0.1:65500/ws')
    wsc.start()

运行结果:
image

用tronado 代理falsk 时与websocket 一起使用:
http://123.56.139.157:8082/article/22/2379729/detail.html

标签:__,ioloop,websocket,self,tronado,import,message
From: https://www.cnblogs.com/yimeimanong/p/18408396

相关文章

  • websocket协议与http协议
    WebSocket协议和HTTP协议都是用于网络通信的协议,但它们在设计目标、通信方式和应用场景上有一些关键的区别。以下是它们的主要区别:1.设计目标HTTP:设计目标:HTTP旨在为万维网提供一种标准化的请求/响应机制,允许客户端和服务器之间进行数据交换。它是无状态的,每个请求都......
  • Vue+SpringBoot项目 服务器上Nginx反向代理WebSocket
    问题首先说下为什么需要做反向代理websocket,因为我的websocket是部署在后端项目中的,前端是vue部署到服务器后之后配置了ssl,前端页面访问就是带有https的,然而后端地址还是http,这就导致使用ws://url去连接后端服务器会出现以下问题然后将访问方式更改为wss://url进行访问,此时的ur......
  • Springboot整合websocket(附详细案例代码)
    文章目录WebSocket简述WebSocket是什么?WebSocket的特点WebSocket的工作流程WebSocket的消息(帧)格式WebSocket与HTTPspringboot中整合WebSocketpom依赖实体类配置类握手配置类WebSocket配置类自定义异常类webSocket服务类websocket中Session的getBasicRemote()和......
  • SpringBoot集成WebSocket实现后端向前端推送数据
    SpringBoot集成WebSocket实现后端向前端推送数据这里最好了解一定websocket参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications在此之前可以了解一下【轮询(Polling)、长轮询(LongPolling)、服务器发送事件(Server......
  • 长连接、短连接、WebSocket区别和使用场景
    长连接、短连接和WebSocket是网络通信中常用的概念,它们各自有不同的特性和适用场景。以下是它们的区别和使用场景:短连接定义:短连接(ShortConnection)是指客户端与服务器之间的连接在每次请求完成后立即关闭。这种方式在HTTP/1.0中是默认行为。特点:每个请求都需要建立和关......
  • node通过ffmpeg将多路rtsp、rtmp流媒体转换为多端口websocket流供前端播放
    node通过ffmpeg将多路rtsp、rtmp流媒体转换为多端口websocket流供前端播放这里写目录标题node通过ffmpeg将多路rtsp、rtmp流媒体转换为多端口websocket流供前端播放1安装node2安装ffmpeg3【重要】使用node搭建rtsp、rtmp转码服务器(必须要提前安装ffmpeg)4前端(vue3)播......
  • 使用AI写WebSocket知识是一种怎么样的体验?
    一、WebSocket基础知识1.WebSocket概念1.1为什么会出现WebSocket一般的Http请求我们只有主动去请求接口,才能获取到服务器的数据。例如前后端分离的开发场景,自嘲为切图仔的前端大佬找你要一个配置信息的接口,我们后端开发三下两下开发出一个RESTful架构风格的API接口,只有当......
  • java 使用WebSocket 功能实现
    java使用WebSocket功能实现我整理的一些关于【架构设计】的项目学习资料+视频(附讲解~~)和大家一起分享、学习一下: https://d.51cto.com/bLN8S1实现Java直播弹幕功能1.引言本文将教会一位刚入行的小白如何实现Java直播弹幕功能。直播弹幕是指在直播过程中,观众可以发送实时弹幕......
  • C# WebSocket高并发通信阻塞问题
    项目上遇到使用WebSocket超时问题,具体情况是这样的,OTA升级过程中,解压zip文件会有解压进度事件,将解压进度通过进程通信传给另一进程,通信提示超时异常小伙伴堂园发现大文件使用Zip解压,解压进度事件间隔竟然是1ms,简直超大频率啊但是,解压事件超频也不应该通信异常啊,于是我通过1ms定......
  • websocket基础 以及 搭建在线聊天室
    一,什么是websocketWebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议二,websocket的原理websocket约定了一个通信的规范,通过一......