Tornado ws示例

简介: Tornado ws示例

以下是使用 Tornado 框架创建 WebSocket 服务器的简单示例:

import tornado.ioloop
import tornado.web
import tornado.websocket
class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket connection opened")
    def on_message(self, message):
        print(f"Received message: {message}")
        self.write_message(f"You sent: {message}")
    def on_close(self):
        print("WebSocket connection closed")
if __name__ == "__main__":
    app = tornado.web.Application([(r"/websocket", WebSocketHandler)])
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

但是一用客户端连就報403错误

如果在使用上述代码示例时遇到了 403 错误(Forbidden),这可能是由于默认的 WebSocket 握手验证导致的。Tornado 的默认设置要求进行 WebSocket 握手验证,以确保连接的安全性。

为了解决这个问题,您可以尝试以下方法:

添加 check_origin 方法:在 WebSocketHandler 类中添加 check_origin 方法,以允许来自任何源的 WebSocket 连接。请注意,这将跳过验证来源,潜在地降低了安全性,因此仅在开发和测试阶段使用时才应该采用此方

       

def check_origin(self, origin):
    return True

完整代码

import tornado.ioloop
import tornado.web
import tornado.websocket
class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket connection opened")
    def on_message(self, message):
        print("Received message:"+message)
        self.write_message("You sent: {message}")
    def check_origin(self, origin):
        return True
    def on_close(self):
        print("WebSocket connection closed")
if __name__ == "__main__":
    app = tornado.web.Application([(r"/websocket", WebSocketHandler)])
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

访问:ws://localhost:8888/websocket 即可

测试地址:WebSocket在线测试工具

目录
相关文章
|
JavaScript
node.js: ws服务端和WebSocket客户端交互示例
node.js: ws服务端和WebSocket客户端交互示例
693 0
|
网络协议 算法 PHP
php socket_import_stream函数的用法
php socket_import_stream函数的用法
190 0
|
JavaScript Python 前端开发
用tornado实现一个简单的websocket样例
想用SPRING MVC,NODE.JS EXPRESS,TORNADO实现同一个功能,开阔一下视野。 先来TORNADO的吧。。 客户端代码都差不多,主要是服务端代码。 TORNADO的说法: http://www.
1678 0
|
Python
Python Web Scraper - Simple Url Request
from urllib.request import urlopen html = urlopen("http://www.baidu.com") print(html.read()) 注意: 以上代码基于Python 3.x
798 0
|
安全 网络安全 Python
python httplib模块HTTP请求详解
python httplib模块HTTP请求详解
|
Python
Python通过http.server构建web服务器
Python通过http.server构建web服务器
247 0
|
Python
Python创建简单的HTTP服务
python2中:   python -m SimpleHTTPServer 80  # 默认端口是8000,目录是当前目录   如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。
929 0
|
前端开发 JavaScript Python
Python创建一个简单的HTTP服务器
Python创建一个简单的HTTP服务器
|
JavaScript
node.js入门学习(2):使用http-server创建简单的http服务的方法
node.js入门学习(2):使用http-server创建简单的http服务的方法
110 0

热门文章

最新文章