Python客户机保持websocket打开并对接收到的消息作出反应

2024-05-15 22:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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)

如果我不知道这是不是很合适。 如果有人能帮忙,那就太好了。在

提前谢谢。在


Tags: 服务器sendrest消息客户机wsresultwebsocket
1条回答
网友
1楼 · 发布于 2024-05-15 22:41:39

我完成了这段代码,做了我期望的事情。从here开始

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()

相关问题 更多 >