我正在比较WebSocket服务器
SignalR仅在Server 2012上可用,但我的服务器运行的是Windows 2008.
SuperWebSocket&Fleck,它们只支持flash-proxy后备.
xsockets.net,这个在老年人网络浏览器中具有长期的后备支持.但它表示后备版仅适用于MVC3/4项目.它可以在MVC3/4应用程序中打开一个端口来接受支持websocket的客户端的连接吗?在Windows 2008上我似乎不可能.
我有一个问题,那就是:XSockets.NET如何在Windows 2008中运行?
如您所知,在IIS8.0之前,http.sys中未添加WebSocket功能.在IIS7.5中,SignalR始终以长池模式运行,适用于所有客户端.
XSockets.NET是一样的吗?因为据说MVC3/4项目只支持长池后备.如果我想利用后备支持,我必须在MVC3/4中使用XSockets.NET,它最终由IIS托管.IIS7.5没有websocket的功能,这就是我所害怕的
有谁知道它如何在IIS7.5中运行MVC应用程序?通过长池处理所有客户?
这是我提出的另一个问题的后续行动,但有更准确的信息.
我有两个基本相同的Web页面演示WebRTC,一个使用XSockets作为后端信令层,一个使用SignalR作为后端信令层.
这两个后端基本相同,只是在它们(显然)有不同的方式将数据发送到客户端的点上有所不同.同样,两个客户端上的TypeScript/JavaScript WebRTC代码完全相同,因为我已经抽象出了信令层.
问题是XSockets站点工作一致,而SignalR站点失败(大多数是一致的,但并非完全).通常它在调用时失败peerConnection.setLocalDescription()
,但它也可能无声地失败; 或者它(有时)甚至可以工作.
您可以在此处查看两个不同的页面:
XSockets网站:http://xsockets.demo.alanta.com/
SignalR网站:http://signalr.demo.alanta.com/
两者的源代码位于https://bitbucket.org/smithkl42/xsockets.webrtc,xsockets
分支上有XSockets版本,分支上有SignalR版本signalr
.
所以我的问题是:有没有人知道为什么使用一个信号层而不是另一个信号层会对WebRTC产生任何影响?例如,一个或另一个发回Unicode字符串而不是ANSI吗?或者我误解了这个问题,真正的区别在于其他地方?
我有一个启动服务器的类:
public class SocketServer
{
private static IXSocketServerContainer server = null;
public SocketServer()
{
server = XSockets.Plugin.Framework.Composable
.GetExport<IXSocketServerContainer>();
}
public bool StartServers()
{
try
{
server.StartServers();
return true;
} catch
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这个类有一个方法:
public void SendEventMessageToAllClients(string message)
{
XSockets.Core.XSocket.Helpers.XSocketHelper
.SendToAll<MyController>(new MyController(), message, "events");
}
Run Code Online (Sandbox Code Playgroud)
MyController
我自己的控制器在哪里,它被实现,服务器可以找到它,这个方法工作.
现在我想用一种新方法扩展功能,允许我将事件发送到特定客户端:
public void SendEventMessageToClient(string clientId, string message)
{
XSockets.Core.XSocket.Helpers.XSocketHelper
.SendTo<MyController>(new MyController(),
p => p.ClientId == clientId, message, "events");
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法还是我做错了什么?
谢谢!