ServiceStack ServerEventsClient自动重新连接

时间:2016-07-29 11:40:09

标签: servicestack

我正在将ServerEventsClient用于客户端的服务器端事件。目前,如果我关闭服务器,则客户端在以后再次可用时不会自动重新连接。

如何让它自动尝试连接?

1 个答案:

答案 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