У меня есть следующий код клиента сигнализатора (использующий библиотеку signalr-client ), который успешно подключается и может отправить сообщение на мой сервер:
from requests import Session
from signalr import Connection
import time
with Session() as session:
#create a connection
connection = Connection("http://localhost:52138/signalr", session)
#get chat hub
chat = connection.register_hub('echo')
#start a connection
connected = False
while not connected:
try:
connection.start()
connected = True
except Exception as e:
print (e)
time.sleep(1)
pass
#create new chat message handler - can't get to fire
def message_received(message):
print ('Hub: New message.', message)
#receive new chat messages from the hub
chat.client.on('message_received', message_received)
#post new message - this works
chat.server.invoke('say', 'Python is here')
while True:
pass
и соответствующий код сервера:
[HubName("echo")]
public class EchoHub : Hub
{
public void Say(string message)
{
Trace.WriteLine("hub: " + message);
Clients.All.SendAsync("message_received", "This is a test message to everyone.");
}
public override Task OnConnected()
{
UserHandler.ConnectedIds.Add(Context.ConnectionId);
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
UserHandler.ConnectedIds.Remove(Context.ConnectionId);
return base.OnDisconnected(stopCalled);
}
}
public static class UserHandler
{
public static HashSet<string> ConnectedIds = new HashSet<string>();
}
Я ожидаю, что message_received
будет запущен и покажет This is a test message to everyone.
, но, похоже, его не уволят ..
Может кто-нибудь увидеть, что яздесь делаешь неправильно?