2013-07-07 85 views
17

这很复杂,并不一定是一个问题。我会很感激任何可能的帮助。Websocket并发症

我读过,可能没有服务器访问的websockets,但我似乎无法找到任何示例显示它是如何。我得出这样的结论(我认为我需要这个)基于以下两点:

  1. 我一直挣扎在过去的几个小时试图找出如何连得WebSockets的工作我的机器上装有WAMP服务器,我有root权限。安装了作曲家,但无法弄清楚如何安装composer.phar文件来安装棘轮。已尝试其他PHP websocket实现(宁愿它在PHP中),但仍然无法让他们工作。

  2. 我用于测试的东西是免费的主机,并且不允许SSH访问。因此,即使我可以想出获得root访问权限的websockets,但对于主机来说,这是一个有争议的问题。

我还发现,免费VPS主机通过谷歌搜索(当然,有限的一切),但具有完全的root访问权限,但我宁愿保持的东西,可以让更多的带宽(我的免费主机是目前无限制) 。我读过你可以(也应该)将websocket服务器托管在与HTTP服务器不同的子域上,并且它甚至可以完全在不同的域上运行。

它也可能最终成本更低,主办我自己的网站,当然没有真正的线索,但在那种情况下,我需要弄清楚如何甚至让websockets在我的机器上工作。

因此,如果任何人都可以理解我在问什么,这里有几个问题,是否有可能使用没有root访问权限的websockets,如果有,怎么办?当我无法弄清楚composer.phar文件时(我的composer.json中带有棘轮代码,但不知道它是否在正确的目录中),我该如何正确安装棘轮websockets?这个问题是,如果第一个问题不是真正有可能。那么是否有可能在VPS上安装websocket服务器,并将HTTP服务器放在完全不同的域上?如果有,是否有任何关于它的文档?

我的意思是,当然,有一个使用AJAX的选项,并且强制浏览器在每个时间段都会重新加载一个JS文件,这会使用jQuery ajax更新一系列div,无论是否有任何更改,但这可能会变得复杂,我甚至不知道这是否可能(我不明白为什么它不会),但是我再次更喜欢websocket,因为我听说他们的资源远不如以前那么多某种这一段会是。

+1

据我了解,websocket图片有两面。服务器(php)和客户端(浏览器javascript)。如果你可以在你的服务器上运行php,你应该可以让你的服务器使用[ratchet](http://socketo.me)并提供一个websocket服务,客户端可以使用类似socket.io的东西 – Loopo

+2

使用[heroku ](http://heroku.com)用于socket.io它有非常棒的命令行来访问你所需要的东西,我已经在那里托管了我的Socket项目,它的功能就像一个魅力,让我知道,如果heroku帮助。试一试!它是免费的,也许你可以依靠它的CLI。 –

+0

像https://pusher.com/可以帮助你吗? – jornare

回答

-1

好的...你有几个问题,所以我会尽力一一回答。

1.使用什么

你可以使用Socket.IO。它是一个用于开发基于JavaScript的实时Web应用程序的库。它由2部分组成 - 客户端(在访问者浏览器上运行)和服务器端。基本用法不需要​​任何关于Node.js的背景知识。 Here is an example教程在官方Socket.IO网站上的一个简单的聊天应用程序。

2.主机

大多数托管服务提供商的具有控制面板(的cPanel)与capebility安装/激活不同的Apache插件等。首先,你应该检查Node.js是否已经不可用,如果没有,你可以联系支持,并询问他们是否包含这个选项。

如果没有与当前的托管提供商,你可以随时快速切换主机,因为有很多很好的交易在那里任何运气。谷歌肯定会在这里帮助你。 Here is a list包含一些(也许)最好的选择。请记住,虽然可能会支付一些托管交易,但有很多低成本选项可供选择。

3.带宽

正如你所担心的“资源饥饿”的代码也许你可以尝试托管您的某些内容上Amazon CloudFront。它是一种广泛使用的内容交付网络,可确保快速连接和快速资源加载,因为文件是从最近的客户端服务器加载的。最好的部分是,你只需支付你实际使用的费用,所以如果你没有那么多的流量,运行起来真的很便宜,而且仍然可靠!

希望这有助于;)

6

Apache下一个纯PHP文件下香草LAMP运行(即mod_php的)不能处理WebSocket连接。它不能执行协议升级,更不用说实际上执行实时通信,至少通过Apache。从理论上讲,对PHP文件运行一个TCP服务器来服务WebSocket请求可能会有一个非常长时间的Web请求,但这是不切实际的,我怀疑一个共享主机实际上是否会允许PHP这样做。

可能会有一些共享的主机,使它们能够用的WebSocket PHP主机,但他们不能提供,没有任何SSH/shell访问,或者一些其他的方式给Web服务器之外运行PHP。如果他们只是给你一个上传PHP文件的目录,并且用Apache提供它们,那么你运气不好。

至于您与Composer的问题,我不知道是否可以在共享主机上运行composer.phar,而无需某种外壳访问。某些主机(例如Heroku)对Composer有特定的支持。

关于一个完全不同的域名运行的WebSocket服务器,你确实可以做到这一点。只需指出您的JavaScript连接到该域,并确保WebSocket服务器提供必要的跨源资源共享标头。