我正在将ServerEventsClient用于客户端的服务器端事件。目前,如果我关闭服务器,则客户端在以后再次可用时不会自动重新连接。
如何让它自动尝试连接?
答案 0 :(得分:0)
我们的测试确实显示ServerEventsClient
在重新启动App Server时会自动重新连接,这是我们使用的简单测试:
var client = new ServerEventsClient("http://localhost:11001", "home")
{
OnConnect = ctx => "OnConnect: {0}".Print(ctx.Channel),
OnCommand = msg => "OnCommand: {0}".Print(msg.Data),
OnException = ex => "OnException: {0}".Print(ex.Message),
OnMessage = msg => "OnMessage: {0}".Print(msg.Data),
OnHeartbeat = () => "OnHeartbeat".Print()
};
client.Handlers["chat"] = (source, msg) =>
{
"Received Chat: {0}".Print(msg.Data);
};
await client.Connect();
显示ServerEventClient在连接的AppServer重新启动时自动重新连接的日志:
OnConnect:
OnCommand: home@cmd.onJoin {"userId":"-2","isAuthenticated":"false","displayName":"user2","channels":"home","profileUrl":"https://raw.githubusercontent.com/ServiceStack/Assets/master/img/apps/no-profile64.png"}
OnHeartbeat
Received Chat: home@cmd.chat {"id":1,"fromUserId":"-1","fromName":"user1","message":"1","private":false}
OnMessage: home@cmd.chat {"id":1,"fromUserId":"-1","fromName":"user1","message":"1","private":false}
Received Chat: home@cmd.chat {"id":2,"fromUserId":"-1","fromName":"user1","message":"2","private":false}
OnMessage: home@cmd.chat {"id":2,"fromUserId":"-1","fromName":"user1","message":"2","private":false}
OnHeartbeat
OnHeartbeat
OnException: The remote server returned an error: (404) Not Found.
OnConnect:
OnCommand: home@cmd.onJoin {"userId":"-3","isAuthenticated":"false","displayName":"user3","channels":"home","profileUrl":"https://raw.githubusercontent.com/ServiceStack/Assets/master/img/apps/no-profile64.png"}
Received Chat: home@cmd.chat {"id":1,"fromUserId":"-2","fromName":"user2","message":"1","private":false}
OnMessage: home@cmd.chat {"id":1,"fromUserId":"-2","fromName":"user2","message":"1","private":false}
Received Chat: home@cmd.chat {"id":2,"fromUserId":"-2","fromName":"user2","message":"2","private":false}
OnMessage: home@cmd.chat {"id":2,"fromUserId":"-2","fromName":"user2","message":"2","private":false}
OnHeartbeat
OnHeartbeat
如果您有重现问题的代码,请将其提交至ServiceStack's Issue Tracker。