我正在使用WebsocketSharp并遇到一些困难:
无论如何都要基于这个来处理websocket的身份验证 ASP.NET WebAPI上的身份验证系统,因为我正在计划 在ASP.NET WebAPI中托管WebsocketSharp服务器。
更新我清楚这一部分。他们只是在同一台服务器上运行的2个单独的应用程序。所以没有来回互动
Websocketsharp github网站:https://github.com/sta/websocket-sharp
答案 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,它可能会给你一些想法。