使用WebsocketSharp管理用户

时间:2015-06-25 16:14:40

标签: authentication websocket

我正在使用WebsocketSharp并遇到一些困难:

  1. 无论如何都要基于这个来处理websocket的身份验证 ASP.NET WebAPI上的身份验证系统,因为我正在计划 在ASP.NET WebAPI中托管WebsocketSharp服务器。

    更新我清楚这一部分。他们只是在同一台服务器上运行的2个单独的应用程序。所以没有来回互动

  2. 如何获取发件人的ID,因为我在github上的README.md文件中看不到任何说明。
  3. 如何将消息发送给特定用户,或者无论如何 连接ID。他们给出的唯一例子是Sessions.Broadcast 发送给所有连接的客户端。
  4. Websocketsharp github网站:https://github.com/sta/websocket-sharp

2 个答案:

答案 0 :(得分:1)

关于问题2和3,websocket-sharp支持开箱即用(我使用的是版本1.0.3-rc11)。

在继承自WebSocketBehavior的自定义套接字类中,您可以访问ID属性,该属性提供表示当前套接字连接的guid字符串。通过重写OnOpen / OnClose / OnMessage处理程序,您可以找到适当的交互点。

您还可以访问带有字符串或字节数组的Send方法。这将发送到当前连接。

如果需要从其他代码调用套接字,则需要获取套接字类的实例。从那里你可以使用如上所述的Session对象。它有一个Broadcast和一个SendTo方法。后者采用的id会导致消息仅针对该连接。

这不会解决所有问题。如果您在ID和用户之间进行映射,那么您需要以vtortola建议的其他方式处理它。但是,如果你真的需要,我建议你切换到SignalR,从一开始就内置。这会让你的生活更轻松。

答案 1 :(得分:0)

您无法在ASP.NET中集成WebSocketSharp,即使您在同一进程中托管它也是如此。它可以在自己的TCP端口上运行,不知道所有用于身份验证的ASP.NET / IIS HTTP模块。

因此,您必须自己动手使用Cookie /标题,例如打开使用的auth cookie或标题并自行评估。

对于第2和第3个问题,有很多方法可以做到这一点。它是通用编程,而不是websockets的任何特定内容。看看这个chat example using WebSockets,它可能会给你一些想法。