[Python] Websocket Example

使用Systemctl啟動服務Service,裡面使用到的範例是啟動Websocket Server,還沒講解到怎麼建立Websocekt Client去跟Server做溝通,現在就以很簡單的例子來做教學。


先來看一下SimpleWebSocketServer所提供的範例:

from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket

class SimpleEcho(WebSocket):

    def handleMessage(self):
        # echo message back to client
        self.sendMessage(self.data)

    def handleConnected(self):
        print(self.address, 'connected')

    def handleClose(self):
        print(self.address, 'closed')

server = SimpleWebSocketServer('127.0.0.1', 8866, SimpleEcho)
server.serveforever()

這個範例是Client端送訊息到Server端,不管內容是什麼就回傳回去,例如:
Client :  Hello!
Server:  Hello!
這樣就可以確定Server跟Client之間的溝通是沒有問題的,我在使用Systemctl啟動服務Service這篇文章中,已經把Websocket Server建成服務了,所以server已經在系統上執行了,接著我們開始來製作一個Websocket Client。

這邊使用的是Websocket-Client所提供的範例:

import websocket
try:
    import thread
except ImportError:
    import _thread as thread
import time

def on_message(ws, message):
    print("receive: " + message)

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    def run(*args):
        for i in range(3):
            time.sleep(1)
            print("send: Hello %d" % i)
            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print("thread terminating...")
    thread.start_new_thread(run, ())


if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://127.0.0.1:8866",                              on_message = on_message,                              on_error = on_error,                              on_close = on_close)
    ws.on_open = on_open
    ws.run_forever()

與Websocket Server建立連線後,Websocket Client端會發送三次的Hello,那麼Websocket Server就會回應三次的Hello,以下就來看看運行的結果:


執行結果如上圖,表示在背景的Webscoket Server跟Webscoket Client,連線有確實建立起來,傳送訊息也正常。




留言

張貼留言

這個網誌中的熱門文章

[Python] 使用 Pyinstaller打包成執行檔

[Linux] SSH筆記