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在线测试工具

目录
相关文章
|
11月前
|
小程序 网络安全 Windows
swoole(二)ws与wss的区别
关于ws与wss的区别这里简单的说一下我目前的见解。 如果你有更多的见解欢迎在下方留言讨论。 最简单的理解就是: 服务器上服务端用的是:websocket协议(支持客户端的ws访问) 服务器上服务端用的是:websocket协议+TLS(支持客户端的wss访问) 客户端上用的是: ws协议或者wss协议 Wss与ws其实就和http与https的关系,wss需要验证域名证书,ws不需要验证域名证书。 这个其实都不重要。我们在开发的时候关系不是很大。 下边的才是我要说的重点: Ws链接可以使用IP+端口号的形式访问。 Wss链接只能使用域名的形式访问,因为服务器端需要通过域名来找对应的ssl证书
602 0
|
2月前
|
JSON API 数据库
json-server的简单使用
如何使用`json-server`来快速搭建一个模拟API服务,包括安装`json-server`、创建JSON数据文件、启动服务以及通过浏览器测试API的基本操作。
45 0
json-server的简单使用
|
2月前
|
JavaScript 前端开发 C++
|
6月前
|
JSON 开发框架 .NET
ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
173 0
|
SQL 开发框架 前端开发
Go标准库http/template
Go标准库http/template
71 0
|
JSON 数据格式 Python
08 Tornado - 输出
08 Tornado - 输出
47 0
|
XML JSON 数据格式
07 Tornado - 输入
07 Tornado - 输入
27 0
|
JavaScript
node.js: ws服务端和WebSocket客户端交互示例
node.js: ws服务端和WebSocket客户端交互示例
666 0
|
前端开发 Python
解决报错:Websocket connection to‘ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket’failed:Error
报错全文为:Websocket connection to‘ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket’failed:Error during Websocket handshake:Unexpected response code:400。如下图所示。
解决报错:Websocket connection to‘ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket’failed:Error
|
Web App开发 网络协议 测试技术
Go 实现 WebSockets:2. 如何在 Go 中创建 WebSockets 应用程序
上一篇文章我们先介绍了什么是 WebSockets 协议。本篇文章将来介绍如何利用 Go 来实现一个 WebSockets。要基于 net/http 库编写一个简单的 WebSocket 响应服务器,我们需要: 1.建立握手 2.从客户端接收数据帧 3.向客户端发送数据帧 4.关闭握手
Go 实现 WebSockets:2. 如何在 Go 中创建 WebSockets 应用程序