Android 信号器和标题

Android 信号器和标题,android,signalr,signalr-hub,Android,Signalr,Signalr Hub,我曾经使用HTTP头将一些身份验证数据从我的SignalR客户端(Android)传递给我们的SignalR 在更新我的项目以使用GitHub的最新源代码后,此技术已停止工作 经过一些研究,我注意到这种情况的发生是因为使用的新默认传输是websocket,而websocket不允许我们使用Http头 所以 有没有办法将HTTP头与信号器和WebSockets传输一起使用 如果没有,如何将一些参数传递到服务器?除了使用querystring,还有其他选项吗 谢谢 一般来说,您应该能够在客户机中设置

我曾经使用HTTP头将一些身份验证数据从我的SignalR客户端(Android)传递给我们的SignalR

在更新我的项目以使用GitHub的最新源代码后,此技术已停止工作

经过一些研究,我注意到这种情况的发生是因为使用的新默认传输是websocket,而websocket不允许我们使用Http头

所以

  • 有没有办法将HTTP头与信号器和WebSockets传输一起使用
  • 如果没有,如何将一些参数传递到服务器?除了使用querystring,还有其他选项吗

  • 谢谢

    一般来说,您应该能够在客户机中设置标题,并且在打开websocket(连接请求)时,它应该将标题发送到服务器。不确定您使用的是什么客户端,但这在确定使用C#client时是可能的。然而,与其他运输方式不同,在使用websocket时发送或接收消息不需要创建新的HTTP请求,因此,如果在打开websocket后设置了标头,则在下次客户端必须发送HTTP请求时(客户端需要重新连接时或连接停止时),这些消息才会发送到服务器。 另一个选项(如果您的客户端不支持WebSocket的标题)是使用查询字符串发送参数。在服务器端,您可以使用属性获取请求,该属性允许您像这样访问查询字符串(您也可以以相同的方式读取cookie):

    Context.Request.QueryString

    同样,只有当客户机发出HTTP请求时,才会将查询字符串发送到服务器,对于建立连接后的WebSocket,这种情况在连接重新连接或停止时发生

    最后,您已经与服务器建立了连接,因此您可以使用此连接发送参数,无论您使用何种传输方式,此连接都应能正常工作