我目前设置了一个实时聊天网站,该网站访问负责处理 SignalR 交互的子域:
www.domain1.com > chat.domain1.com
我想介绍第二个使用相同结构的、重复的、基本相同的站点:
www.domain2.com > chat.domain2.com
两个站点将使用相同的数据库,该数据库存储所有与 SignalR 相关的持久性内容,例如连接、聊天室、聊天消息等。
两个 SignalR 聊天子域是否可以与连接到另一个子域的客户端进行通信?虽然共享数据库意味着共享持久性资源,但我需要这样做,以便当我在 chat.domain1.com 上发布事件时,连接到chat.domain1.com和chat.domain2.com的客户端都能接收到它们。
似乎通过共享同一个域并使用 CORS 来处理跨域交互来处理这个问题是很常见的,如下所示:
www.domain1.com
> chat.domain1.com
www.domain2.com
我不能这样做,因为 SignalR 聊天端点使用在主 www 域上设置的 cookie 进行身份验证。这些 cookie 不能跨域共享,即使可以,也要求用户能够在同一台机器上同时登录 domain1.com 和 domain2.com 上的不同帐户。
那么,有什么方法可以用来在这两个集线器之间共享连接吗?两个聊天子域都托管在同一台服务器上?