Python 客户端使 websocket 保持打开状态,并对收到的消息做出反应



我正在尝试在python中实现一个REST客户端,该客户端对通过相关服务器打开的websocket从服务器接收的消息做出反应。场景如下:

  • 客户端使用服务器打开 WebSocket
  • 服务器不时向客户端发送消息
  • 当客户端收到消息时,它会从服务器

我拥有的当前客户端能够打开 websocket 并从服务器接收消息。但是,一旦它收到消息,它就会从服务器获取信息,然后终止,而我想让它继续侦听其他消息,这将使它从服务器获取新内容。

这是我拥有的代码段:

def openWs(serverIp, serverPort):
    ##ws url setting
    wsUrl = "ws://"+serverIp+":"+serverPort+"/websocket"
    ##open ws
    ws = create_connection(wsUrl)
    ##send user id
    print "Sending User ID..."
    ws.send("user_1")
    print "Sent"
    ##receiving data on ws
    print "Receiving..."
    result =  ws.recv()
    ##getting new content
    getUrl = "http://"+serverIp+":"+serverPort+"/"+result+"/entries"
    getRest(getUrl)

我不知道使用线程是否合适,我不是这方面的专家。如果有人能帮忙,那就太好了。

提前谢谢。

我完成了这段代码,做了我所期望的。从这里开始

import websocket
import thread
import time
def on_message(ws, message):
    print 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)
            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://localhost:5000/chat",
                                on_message = on_message,
                                on_error = on_error,
                                on_close = on_close)
    ws.on_open = on_open
    ws.run_forever()

相关内容

  • 没有找到相关文章

最新更新