0

我有一个 Web 应用程序,用户将在其中看到他们的新消息的通知,我想将通知推送给已经登录的用户。

我已经看到我可以使用 PokeIn 的服务器推送来做到这一点,我已经尝试并理解了使用它的简单应用程序,但我没有得到 ClientID 的东西。

它保存在“OnClientConnected”中的ClientId是一个简单的整数,那么它如何识别客户端并调用它们的函数呢?

另外,它使用混合长轮询方法,有人可以解释一下这是什么吗?

如果没有足够的知识,我将无法实施。

是否将 ClientID 保存在数据库中以供登录用户使用,然后使用它推送数据?

更新:

即使来自同一个浏览器窗口或选项卡中的请求,每次请求时收到的 ClientId 也是不同的,因此我必须在我的母版页中包含处理程序,并且在每个请求中,我必须将收到的 ClientId 映射到登录用户,以便我可以向他发送消息。

我不能只在 LogIn 上将(ClientId 到 LoggedIn UserId)映射一次,然后使用同一个 ClientId 向他发送消息吗?

4

2 回答 2

6

ClientID 代表您的应用程序的特定客户端视图的标识键,并且每次都会更改。它可以帮助您通过键管理和定位特定视图。另一方面,您仍然可以将 ASP.NET 会话 ID 与 PokeIn 客户端 ID 一起使用。唯一的区别是,如果任何用户在同一浏览器的不同选项卡上打开您的应用程序,每个选项卡将有一个唯一的客户端 ID。实际上,这是您可能需要的一个很棒的功能。另一方面,当客户端断开连接时(几乎立即),PokeIn 也会通知您。

您可以通过客户端 ID 访问会话 ID;CometWorker.GetSessionId(string ClientId)

或会话 ID 的客户端 ID;CometWorker.GetClientIdsBySessionId(string sessionId)

此外,如果您不想使用客户端 ID 系统(这非常有用),您可以选择“联合”选项。它可以帮助您使用您定义的名称从客户端发送和接收消息。(这里有一个“联合”功能的示例)

因为 PokeIn 提供了各种连接选项,所以在使用 PokeIn 时您不必考虑其背后的方法。它只是提供了各种解决方案的好处。更多信息可以从:“ FAQ ”和“高级教程”(http://www.pokein.com/Help/AdvancedTutorial.aspx)获得

最后,您不必将 PokeIn 客户端 ID 保存到数据库中。PokeIn 有效地管理每个客户端的服务器端对象。我建议您检查示例和教程。

于 2011-03-23T19:01:06.677 回答
0

作为更新的答案,当您需要客户端的共享服务器端实例或客户端的一致命名时,您可以自由使用 PokeIn 的联合功能。

于 2011-04-24T03:03:51.707 回答