2016-08-04 73 views
2

我試圖從服務器作爲客戶端推送;用我的測試客戶端如下:如何將通知推送到Flask-SocketIO中的測試客戶端?

客戶:

socket_client = socketio.test_client(app) 
@socketio.on('hit_client') 
def recieve_message(json_data): 
    print("Server has called!") 

服務器:

socketio.emit('hit_client', 'Hi Client!') 

服務器應推動並調用hit_client通道,但沒有被解僱。但是,socket_client.get_received()具有發射的數據。我認爲WebSockets的重點是雙向通信(即推送功能觸發器)!

這是一個非常簡單的設置,它似乎沒有工作......任何幫助將極其讚賞。我一直盯着我的頭幾個小時。

回答

1

測試客戶端不是Socket.IO客戶端。它的唯一目的是幫助你爲你的Socket.IO服務器編寫單元測試。它在概念上與用於HTTP路由的Flask測試客戶端類似。在單元測試中使用它纔有意義。

當服務器向客戶端發出某些東西時,測試客戶端將只存儲它並通過get_received調用使其在測試代碼中可訪問。它不會發射任何事件,因爲這不是它的預期目的。

如果你想在python中實現一個Socket.IO客戶端,有一個包:https://pypi.python.org/pypi/socketIO-client。使用這個包,你可以編寫一個連接到Socket.IO服務器的Python腳本,並且可以發送和接收事件。

+1

謝謝米格爾。我非常感謝你的迴應! – echo

相關問題