Tag: websocket

如何使用System.Net.HttpListener在WebSocket中启用SSL

我在Windows Azure(工作者角色)上使用.Net 4.5和HttpListener类来创建自己的WebSocket服务器。 对于HTTP非安全连接,它可以很好地工作。 问题是我需要使用SSL(wss://)保护WebSocket连接。 我一直在寻找,HttpListener类文档和互联网(即使在这里)都没有帮助我。 我发现httpcfg.exe应该帮我配置证书,但没有幸运。 那么,这是我的问题: 有没有办法从我的代码中启用它? 喜欢从商店读取证书并以某种方式在HttpListener上设置它? 如果没有,httpcfg.exe是解决方案? 如果是的话,如何使用它? 如果1 ==否和2 ==是,我如何在Azure中使用httpcfg? 谢谢! 我非常感谢帮助…… 最好的祝福… Gutemberg

SignalR IOS客户端,Web Socket传输无法从服务器调用该方法

我使用SignalR-ObjC Client在我的IOS应用程序和.Net服务器之间提供通信。 我可以连接longpulling并从自托管跨域服务器调用方法,没有任何错误。 但由于我的应用程序需求,我必须使用WebSocket。 我有一个Singleton Manager,如: @implementation SignalRManager static int reconnectingTry; + (id)sharedManager { static SignalRManager *sharedHttpManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedHttpManager = [[self alloc] init]; sharedHttpManager.hubConnection = [SRHubConnection connectionWithURL:@”http://xxx:8080/signalr”]; sharedHttpManager.proxy = [sharedHttpManager.hubConnection createHubProxy:@”myhub”]; }); return sharedHttpManager; } +(SRHubProxy *)proxy { return [[SignalRManager sharedManager] proxy]; } +(SRHubConnection *)connection { return [[SignalRManager sharedManager] […]

如何在没有ASP.NET的情况下使用System.Net.WebSockets?

我想在.NET 4.5及更高版本(在Windows 8.1上)中使用新的System.Net.WebSockets类实现一个简单的聊天服务器。 但是,我只找到在ASP.NET环境中使用这些类的示例(特别是这里的那些: http : //www.codemag.com/Article/1210051 ) 我没有这样的,并且想尽可能地将websocket服务器实现为“原始”,但不必重新实现所有的websocket协议,因为微软希望已经在.NET 4.5中实现了这一点。 我想过简单地实例化一个新的WebSocket类,就像我用普通的Socket做的那样,但构造函数是受保护的。 所以我去创建一个inheritance自它的类,但后来我注意到我必须实现这么多抽象方法和属性,看起来我正在重写整个逻辑(特别是因为我必须实现State或SendAsync类的东西)。 我担心MSDN文档没有帮助我。 那里的文档有一个预发布状态,很多评论只是说“TBD”或“当它实现时”。

在C#Web应用程序中使用WebSockets?

我知道可以使用在Web应用程序旁边运行的控制台应用程序在C#中使用WebSockets,但我想知道是否可以使用C#Web应用程序上的请求来创建WebSockets。 我一直在寻找ASP.Net,我开始认为它不可能,除非我直接使用C#并创建我自己的HTTP服务器,然后使用相同的套接字对象生成Web套接字(类似于Node.js和Socket.IO工作)。 有关如何在没有多个服务器/项目的情况下将WebSockets包含在C#Web应用程序中的任何想法?

那么…… ASP.NET MVC和WebSockets?

我在MVC 3中有一个应用程序,我正在寻找添加WebSockets(后备到Comet)。 我研究了一下,我发现Comet部分很简单,我宁愿自己做。 只需AsyncControllers和一些非常简单的js就可以处理那些长期存在的ajax请求。 现在,就WebSocket而言,事情开始变得肮脏。 我看了几个库,但他们似乎主要建立了一个自己的Web服务器(因此需要另一个主机或端口),并在那里监听ws协议请求。 例如SuperWebSocket就是这种情况,一开始看起来很不错,但是这个“我是一个Web服务器”问题(当然这很好,但我宁愿避免)。 然后我看了“PingIt”或类似的东西,我现在找不到链接..,我确实在另一台计算机上有源。 这一个在mvc中的端点上运行,但我不太喜欢它处理事物的方式,比如它需要一个IDisposable对象并通过reflection器创建一个javascript片段,在客户端呈现,这是非常污染的他们的图书馆名称,我真的没有兴趣,加上它感觉很多东西被抛到了我想要的东西,这与我对如何呈现页面的观点有所不同(特别是现在我正在研究MVC,这意味着我可以编写干净,不引人注目的html页面)。 基本上我想要的是我的端点是这样的: domain.com/rt/comet domain.com/rt/socket 而不是 domain.com/rt/comet domain.com:81/ 那么:是否有可能在asp.net MVC应用程序的控制器中的端点上接收websocket连接(并进行握手和需要完成的任何操作),而不是在某处设置tcplistener? 这也可以帮助我保持我的彗星代码更接近我的websocket代码 我应该说我对整个彗星/ websockets事情都很认真,所以我真的不太了解(或任何)协议,我确实知道如何使彗星工作,但在websockets中却没有那么多,尽管我已经阅读并理解了基础知识以获得它的要点。 另外:请告诉我,如果我要问的是什么

尽管在连接上保持活动和活动,.NET WebSockets仍强制关闭

我们使用System.Net.WebSockets编写了一个简单的WebSocket客户端。 ClientWebSocket上的KeepAliveInterval设置为30秒。 连接成功打开,流量按预期在两个方向上流动,或者如果连接空闲,客户端每30秒向服务器发送一次Pong请求(在Wireshark中可见)。 但是在100秒之后,由于TCP套接字在客户端被关闭,连接突然终止(在Wireshark中观察我们看到客户端发送FIN)。 在关闭套接字之前,服务器以1001 Going Away响应。 经过大量的挖掘,我们已经找到了原因,并找到了一个相当沉重的解决方法。 尽管有很多谷歌和Stack Overflow搜索,我们只看到了其他几个人发布关于这个问题的例子,没有人回答,所以我发布这个以拯救他人的痛苦,并希望有人能够建议一个更好的解决方法。 100秒超时的来源是WebSocket使用System.Net.ServicePoint,它具有MaxIdleTime属性以允许关闭空闲套接字。 在打开WebSocket时,如果Uri有现有的ServicePoint,它将使用它,无论MaxIdleTime属性在创建时设置为什么。 如果没有,将创建一个新的ServicePoint实例,MaxIdleTime根据System.Net.ServicePointManager MaxServicePointIdleTime属性的当前值设置(默认为100,000毫秒)。 问题是,就ServicePoint空闲计时器而言,WebSocket流量和WebSocket保持活动(Ping / Pong)似乎都不会注册为流量。 因此,在打开WebSocket后100秒,它就会被拆除,尽管有交通或保持活动。 我们的预感是,这可能是因为WebSocket作为HTTP请求启动,然后升级到websocket。 似乎空闲计时器仅查找HTTP流量。 如果确实发生了这似乎是System.Net.WebSockets实现中的一个主要错误。 我们使用的解决方法是将ServicePoint上的MaxIdleTime设置为int.MaxValue。 这允许WebSocket无限期保持打开状态。 但缺点是该值适用于该ServicePoint的任何其他连接。 在我们的上下文(使用Visual Studio Web和负载测试进行负载测试)中,我们为同一个ServicePoint打开了其他(HTTP)连接,实际上在我们打开WebSocket时已经存在一个活动的ServicePoint实例。 这意味着在我们更新MaxIdleTime之后,Load测试的所有HTTP连接都没有空闲超时。 这感觉不太舒服,但实际上Web服务器应该关闭空闲连接。 我们还简要探讨了是否可以创建一个仅为我们的WebSocket连接保留的新ServicePoint实例,但是看不到干净的方法。 另一个使得更难追踪的小扭曲是,虽然System.Net.ServicePointManager MaxServicePointIdleTime属性默认为100秒,但Visual Studio会覆盖此值并将其设置为120秒 – 这使得搜索更加困难。

如何通过WebSocket发送更大的消息?

我正在用C#开发一个WebSocket服务器,我注意到使用send()方法来自浏览器(在这种情况下是Chrome)的所有消息都是126个字符长度最大值。 它总是发生在我想要发送大于126个字符的消息时,看起来协议会切断大于126个字符的消息并仅传输前126个字符。 我试图检查协议定义,但没有找到任何答案。 所以,我的问题是,我可以通过WebSockets发送更大的消息吗? 更新:这是我在C#WebSocket服务器中解析来自客户端(Chrome)的消息的方式: private void ReceiveCallback(IAsyncResult _result) { lock (lckRead) { string message = string.Empty; int startIndex = 2; Int64 dataLength = (byte)(buffer[1] & 0x7F); // when the message is larger then 126 chars it cuts here and all i get is the first 126 chars if (dataLength > 0) { if (dataLength […]

在Windows Azure上运行Fleck(或任何)Websocket服务器

我想从Azure中的worker角色运行WebSocket服务器。 这在模拟器上本地工作正常,但是第一次运行套接字服务器时会出现Windows防火墙提示。 我想知道是否有人知道如何克服Azure上的套接字的连接问题。 我的套接字服务器实现: OnStart var server = new WebSocketServer(“ws://theappname.cloudapp.net:8080/”); server.Start(socket => { socket.OnOpen = () => { Trace.WriteLine(“Connected to ” + socket.ConnectionInfo.ClientIpAddress,”Information”); _sockets.Add(socket); }; }); …. etc 客户端实现: var socket = new WebSocket(“ws://theappname.cloudapp.net:8080”); socket.onopen = function () { status.html(“Connection Opened”); }; socket.onclose = function () { status.html(“Connection Closed”); } 加载页面后,状态将更改为closed几秒钟。 我的工作者角色的端点如下: WebSocket Input http […]

C#HTML5 Websocket服务器

我正在尝试创建一个C#Websocket服务器,但我似乎并没有让它工作。 我现在有一个接受TCPClient的服务器,从客户端接收HTTP请求并尝试发回HTTP响应,以便完成HTML5 WebSocket握手。 我相信服务器发送给客户端的握手有问题。 我阅读了草案( Websocket 76草案 ),其中指出在握手结束时必须给出给出的两个键的响应。 此响应由服务器计算。 这是我的代码: static void Main(string[] args) { int port = 8181; IPAddress localAddr = IPAddress.Loopback; TcpListener server = new TcpListener(localAddr, port); server.Start(); // Buffer for reading data Byte[] receivedBytes = new Byte[256]; String data = null; // Enter the listening loop. while (true) { Console.WriteLine(“Waiting for a […]

带有ASP.NET MVC / MVVM的Websockets

今天早些时候,我遇到了Kaazing的 HTML5 WebSocket API。 看起来很棒,但由于我现在只研究WebSocket实时财务更新的可能性,我想听一些建议,以及在规划这个架构时要避免的陷阱。 我正在看ASP.Net MVC,可能还有一些WPF / Silverlight MVVM。 是否有其他更好的WebSocket API(以及为什么),以及一些很好的例子? 此外,WebSockets可以处理什么样的流量? 我的意思是,如果我们在系统上有超过一百万用户实时更新,那么硬件需求如何变化,因为软件架构实现了WebSockets?