如何使用Tornado实现WebSocket服务器?
什么是龍卷風? (What is Tornado?)
Tornado is a python web framework and asynchronous networking library. It is scalable and non-blocking. It specializes in dealing with event-driven networking. As tornado supports concurrent connections, naturally, a server can take advantage of this behavior and handle a lot of web socket connections within a single node.
Tornado是一個python Web框架和異步網絡庫 。 它具有可伸縮性和非阻塞性。 它專門處理事件驅動的網絡。 由于龍卷風支持并發連接,自然地,服務器可以利用此行為并在單個節點內處理許多Web套接字連接。
什么是Websocket? (What is Websocket?)
WebSocket is a protocol that provides full-duplex communication channels over a single TCP connection. The behavior of the open socket makes a web connection stateless and facilitates the real-time data transfer to and from the server.
WebSocket是一種協議,可通過單個TCP連接提供全雙工通信通道。 開放套接字的行為使Web連接變為無狀態,并促進了與服務器之間的實時數據傳輸。
WebSockets are designed to be used in web-browsers and servers. A connection is opened once and messages can travel to-fro multiple times before the connection is closed.
WebSockets設計用于Web瀏覽器和服務器。 連接一次打開,并且消息可以在關閉連接之前往返傳輸多次。
安裝龍卷風 (Install Tornado)
Installing the tornado is rather simple in a virtual environment using pip.
在使用pip的虛擬環境中安裝龍卷風非常簡單。
Create a virtual environment
創建一個虛擬環境
python3 -m venv /path/to/virtual/environment
python3 -m venv / path / to / virtual / environment
>> python3 -m venv venv
>> python3 -m venv venv
Source the virtual environment
采購虛擬環境
>> source venv/bin/activate
>>源venv / bin / activate
Install the websocket-client using pip
使用pip安裝websocket-client
>> (venv) pip3 install tornado
>>(Venv)pip3安裝龍卷風
使用Tornado庫啟動Web套接字服務器的Python示例 (Python example to start a web socket server using Tornado library)
'''This module hosts a websocket server using tornadolibraries '''import tornado.web import tornado.httpserver import tornado.ioloop import tornado.websocket as ws from tornado.options import define, options import timedefine('port', default=4041, help='port to listen on')class web_socket_handler(ws.WebSocketHandler):'''This class handles the websocket channel'''@classmethoddef route_urls(cls):return [(r'/',cls, {}),]def simple_init(self):self.last = time.time()self.stop = Falsedef open(self):'''client opens a connection'''self.simple_init()print("New client connected")self.write_message("You are connected")def on_message(self, message):'''Message received on the handler'''print("received message {}".format(message))self.write_message("You said {}".format(message))self.last = time.time()def on_close(self):'''Channel is closed'''print("connection is closed")self.loop.stop()def check_origin(self, origin):return Truedef initiate_server():#create a tornado application and provide the urlsapp = tornado.web.Application(web_socket_handler.route_urls())#setup the serverserver = tornado.httpserver.HTTPServer(app)server.listen(options.port)#start io/event looptornado.ioloop.IOLoop.instance().start()if __name__ == '__main__':initiate_server()The above code will start the server on localhost and port as 4041.
上面的代碼將在localhost和端口4041上啟動服務器。
Connect to the server using a websocket client code (example below),
使用websocket客戶端代碼連接到服務器(以下示例),
from websocket import create_connectiondef short_lived_connection():ws = create_connection("ws://localhost:4040/")print("Sending 'Hello Server'...")ws.send("Hello, Server")print("Sent")print("Receiving...")result = ws.recv()print("Received '%s'" % result)ws.close()if __name__ == '__main__':short_lived_connection()Output (Client side):
輸出(客戶端):
>>Sending 'Hello, Server'... >>Sent >>Receiving... >>Received 'You are connected'Output (Server side):
輸出(服務器端):
>>New client connected >>received message Hello, Server >>connection is closedReferences:
參考文獻:
Tornado
龍卷風
WebSocket
WebSocket
翻譯自: https://www.includehelp.com/python/how-to-implement-a-websocket-server-using-tornado.aspx
總結
以上是生活随笔為你收集整理的如何使用Tornado实现WebSocket服务器?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android点击加号,Android仿
- 下一篇: 如何设置单词第一个字母大写_大写一行中每