Tornado框架中如何编写WebSocket程序?
参考答案:
Tornado是一个Python的可扩展的Web服务器和异步网络库,它原生支持WebSocket协议。以下是一个使用Tornado编写的基本WebSocket服务器的示例:
import tornado.ioloop
import tornado.web
import tornado.websocket
class WebSocketHandler(tornado.websocket.WebSocketHandler):
async def on_message(self, message):
await self.write_message(u"You said: " + message)
async def on_close(self):
print("WebSocket closed, connection count:", len(self.application.connections))
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("template.html")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
(r"/websocket", WebSocketHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
在这个例子中,WebSocketHandler
类负责处理WebSocket连接。on_message
方法会在收到客户端的消息时被调用,on_close
方法会在WebSocket连接关闭时被调用。
on_message
方法接收一个参数,即客户端发送的消息的内容。在这个例子中,服务器会将接收到的消息原样返回给客户端。
on_close
方法打印了当前活动连接的数量。
MainHandler
类是一个普通的HTTP请求处理器,用于提供一个HTML模板,这个模板中包含一个连接到WebSocket服务器的JavaScript客户端。
这个例子中的WebSocket服务器监听在8888端口。你可以通过运行python your_script.py
来启动它,然后在浏览器中打开http://localhost:8888/
来连接到服务器。
你需要在你的HTML模板中添加JavaScript代码来建立WebSocket连接并发送/接收消息。这通常会使用WebSocket
对象的open
,send
,onmessage
,onerror
,和onclose
方法。
注意:这是一个非常基础的WebSocket服务器示例,实际使用中你可能需要添加更多的错误处理,以及更复杂的消息处理逻辑。