2016-08-04 1 views
2

J'essaye de recevoir des poussées du serveur en tant que client; en utilisant mon client de test comme suit:Comment faire pour envoyer des notifications à Test Client dans Flask-SocketIO?

Client:

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

Serveur:

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

Le serveur devrait pousser et appeler le canal hit_client, mais ce n'est pas tiré. Cependant, le socket_client.get_received() a les données émises. Je pensais que tout le but de WebSockets était la communication bidirectionnelle (c'est-à-dire le déclenchement de la fonction de déclenchement)!

Ceci est une configuration très simple et il ne semble même pas fonctionner ... Toute aide serait extrêmement appréciée. Je claque ma tête depuis des heures.

Répondre

1

Le client de test n'est pas un client Socket.IO. Son seul but est de vous aider à écrire des tests unitaires pour votre serveur Socket.IO. Son concept est similaire à celui du client de test de Flask pour les routes HTTP. Cela n'a de sens que de l'utiliser dans les tests unitaires. Lorsque le serveur émet quelque chose sur le client, le client de test le stocke et le rend accessible dans votre code de test via l'appel get_received. Il ne déclenchera aucun événement, puisque ce n'est pas son but.

Si vous souhaitez implémenter un client Socket.IO en python, il existe un package pour cela: https://pypi.python.org/pypi/socketIO-client. Avec ce package, vous pouvez écrire un script Python qui se connecte au serveur Socket.IO et peut envoyer et recevoir des événements.

+1

Merci Miguel. J'apprécie vraiment que tu aies répondu! – echo