SignalR:在发送每条SignalR消息之前请求cookie

时间:2014-08-26 16:14:38

标签: asp.net asp.net-mvc cookies signalr

情况:对于使用SignalR的Web应用程序,为了将消息从服​​务器(Azure WebRole)发送到浏览器,我需要在将每条消息发送到浏览器之前访问浏览器cookie。在发送消息之前,cookie将包含一些信息来处理/解码消息(由于访问解码算法的复杂性,我无法在java脚本中执行此操作)。 该方案将是在服务器中准备好消息后立即访问cookie - >解码消息 - >发送消息。

问题:在我要发送给浏览器的每封邮件之前,请求浏览器向我提供Cookie是否有意义?或者它是否破坏了SignalR的整体想法(成为一个始终连接的tcp)? 如果它确实有意义,那么我该怎么做呢?如何访问集线器中的cookie?

如果无法做到这一点,那么我必须将解码信息存储在服务器的某个持久存储中。

P.S:我对SignalR很陌生,如果这个问题太天真,请原谅我。

1 个答案:

答案 0 :(得分:2)

Cookie似乎是将不可变数据从客户端传递到SignalR服务器的合理方式。您可以从Hub内部读取cookie,如下所示:

public void MyHubMethod()
{
    Cookie cookie = Context.Request.Cookies["cookieName"];
    // ...
}

请注意,Context.Request引用的请求将在WebSockets的情况下运行很长时间,因此在启动SignalR连接后,不要期望获取可能对cookie进行的任何更改。