Websockets - 服务器端要求(Windows 服务器,不是 Apache)

Posted

技术标签:

【中文标题】Websockets - 服务器端要求(Windows 服务器,不是 Apache)【英文标题】:Websockets - Server-side requirements (Windows server, not Apache) 【发布时间】:2014-04-05 18:27:45 【问题描述】:

我试图了解 websocket 是如何工作的,但我找不到任何像样的教程。 如何在 Windows 服务器上使用 websocket?它是否需要任何扩展和一些 php 代码?是插座吗?还是某种彗星新技术?

如果我正在处理,例如www.websocket.com/game/1.htm,并且我想在此页面上建立一个 websocket 连接,我应该使用什么 url?

谢谢

【问题讨论】:

“你问一个模糊的问题,你会得到一个模糊的答案”请阅读全文***.com/questions/how-to-ask Roy,我看到你说“我认为它是 AJAX 的新版本。它可能是:websockets 是未来。微软创建了 SignalR,在开发网站时使用 websockets 的框架. 看看:asp.net/signalr 【参考方案1】:

阅读:http://chimera.labs.oreilly.com/books/1230000000545/ch17.html

在 MS 生态系统中,有多种使用 WebSockets 的选项:

ASP.NET(要求服务器为 windows 8 或 2012),可以在与您的 web 应用程序相同的端口上运行:http://msdn.microsoft.com/en-us/library/vstudio/system.net.websockets XSocket.NET:http://xsockets.net/ SuperWebSocket : http://superwebsocket.codeplex.com/ Alchemy Websocket:http://alchemywebsockets.net/ WebSocket 监听器:https://github.com/vtortola/WebSocketListener

【讨论】:

首先,谢谢!所以它是一个插座。令人失望。所以它确实需要扩展和服务器端代码? 您期待什么?我很好奇:D 已经有一个新版本的“ajax”:html5rocks.com/en/tutorials/file/xhr2。 websocket 是一个持久的全双工二进制连接,其用例与 AJAX 不同。它更专注于“推送”架构。 是的,它需要服务器端支持和处理编码。 你暂时不了解我,Websocket正是我需要的,但我认为它会使用Comet技术开发,比如ajax。我想在我的服务器上设置 websocket,但是,它非常复杂,服务器端广泛,我仍然不太明白从哪里开始,什么是最好的解决方案。【参考方案2】:

实际上对于“基于 PHP 的 websocket”并没有真正的要求。事实上,websocket 并不像你一直做的那样,只是一个简单的“连接”。当您访问您的网址时,无论如何,您都设置了这个“套接字”。现在,您必须实现的唯一目标是确保此连接不会“死亡”。 这可以通过在脚本上设置时间限制来实现,如下所示:

set_time_limit(0);

这意味着脚本在“连接”到 URL 时永远不会超时。之后,您只需按照

中的方式进行操作
new PHPWebSocket();

然后你可以用它做任何你想做的事,同时保持连接。这只是一个小故事,还有其他方法,但我建议您阅读更多关于 websockets 以及 PHP 如何“处理”它的内容。

【讨论】:

【参考方案3】:

好吧,如果你喜欢在 Windows 中使用 WebSockets,最好的选择是: SignalR

它使开发变得非常简单,它也适用于尚不支持 websockets 的浏览器,使用普通的 AJAX 长轮询,或 Forever Frame 等。

举个例子,学习一点,你就能制作出令人难以置信的实时网站。

太神奇了,websockets 是未来!

【讨论】:

我同意 websockets 是未来(或者全双工通信是未来)。尽管我认为 signalr 是一个不错的选择,但它只是 websocket 协议之上的抽象。您依赖操作系统版本来获取带有信号器的 websockets,并且需要在服务器上使用 win8+,并且您也没有在所有客户端上获取 websockets。但我很高兴看到 MS 正在构建类似 signalr 的东西,尽管它不是我在 .NET 堆栈上的选择(还) 我同意你关于服务器要求的观点,但是关于“你没有在所有客户端上获得 websockets”,这就是 websockets 目前的现实。并非所有浏览器都支持它们,因此您需要使用其他技术来补偿那些不支持的浏览器。而 SignalR 做到这一点很顺利,它真的很容易使用、理解、开发等。如果你已经有一个 AJAX ASP.NET 应用程序,那么迁移到 SignalR 太容易了。 嗯,我考虑的更多是其他客户端而不是浏览器。如.NET 2.0、3.5、4.0等以及iosandroid等设备。其他框架在那里有 websocket 支持,但由于 signalr 依赖 websocket 作为操作系统功能,所以感觉不好。但是,我对此非常挑剔。信号器的平均需求可能会很好!这是一个很好的框架! 更不用说跨协议连接事物的能力(对我来说非常重要)。这样我就可以连接诸如 netduino 或原始套接字、powershell、nodejs 之类的东西,并且仍然可以通过同一平台进行通信(并且始终使用全双工套接字)。正如我所说的......我对此非常暴躁;)

以上是关于Websockets - 服务器端要求(Windows 服务器,不是 Apache)的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 Websockets 服务器要求

是否可以检查(服务器端)是否占用了 laravel-websockets 通道?

关于Websockets问题:

NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer

WebSocket 后备服务器端

Flutter 之 WebSockets (三十一)