17

这很复杂,而且不一定是一个问题。我将不胜感激任何可能的帮助。

我已经读过没有服务器访问权限的 websockets 是可能的,但我似乎找不到任何例子来说明它是如何的。基于以下两件事,我得出了这个结论(我相信我需要这个):

  1. 在过去的几个小时里,我一直在苦苦挣扎,试图弄清楚如何让 websockets 与我机器上的 WAMP 服务器一起工作,我有 root 访问权限。已安装作曲家,但无法弄清楚如何安装 composer.phar 文件来安装棘轮。已经尝试过其他 PHP websocket 实现(希望它在 PHP 中),但仍然无法让它们工作。

  2. 我目前用来测试的虚拟主机是免费主机,并且不允许 SSH 访问。因此,即使我能想办法获得具有 root 访问权限的 websocket,这对于主机来说也是一个有争议的问题。

我还通过谷歌搜索找到了免费的 VPS 主机(当然,限制了所有内容),但具有完全的 root 访问权限,但我更愿意保留允许更多带宽的东西(我的免费主机目前是无限的)。而且我读到您可以(并且应该)将 websocket 服务器托管在与 HTTP 服务器不同的子域上,并且它甚至可以完全在不同的域上运行。

托管我自己的网站最终也可能更便宜,当然对此没有真正的线索,但在这种情况下,我需要弄清楚如何让 websockets 在我的机器上工作。

所以,如果有人能理解我在问什么,这里有几个问题,是否可以在没有 root 访问权限的情况下使用 websockets,如果可以,如何?当我无法弄清楚 composer.phar 文件时,如何正确安装棘轮 websockets(我有 composer.json,其中包含棘轮代码,但不确定它是否在正确的目录中),这个问题是如果第一个问题不是真正有可能。那么是否有可能在 VPS 上拥有 websocket 服务器,并在完全不同的域上拥有 HTTP 服务器,如果是这样,是否有任何关于它的文档?

我的意思是,当然,可以选择使用 AJAX 并强制浏览器每隔一段时间重新加载一个 JS 文件,这将使用 jQuery ajax 来更新一系列 div,无论是否有任何更改,但这可能会变得复杂,我什至不确定这是否可能(我不明白为什么不可能),但是我又更喜欢 websockets,因为我听说它们比某种资源消耗更少段将是。

4

2 回答 2

6

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

可能有一些共享主机使得使用 PHP 托管 WebSocket 成为可能,但是如果没有 SSH/shell 访问或其他在 Web 服务器之外运行 PHP 的方式,它们就无法提供。如果他们只是给你一个目录来上传 PHP 文件,并用 Apache 为它们提供服务,那么你就不走运了。

至于您对 Composer 的麻烦,我不知道是否可以composer.phar在没有某种 shell 访问权限的情况下在共享主机上运行。一些主机(例如 Heroku)对 Composer 有特定的支持。

关于在完全不同的域上运行 WebSocket 服务器,您确实可以这样做。只需将您的 JavaScript 指向该域,并确保 WebSocket 服务器提供必要的跨域资源共享标头。

于 2016-02-10T01:59:49.050 回答
-1

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

1. 用什么

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

2. 托管

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

如果您对当前的托管服务提供商没有任何运气,您可以随时快速切换主机,因为那里有很多优惠。谷歌一定会在这里为您提供帮助。 这是一个包含一些(也许)最佳选项的列表。请记住,尽管可能会支付一些托管交易,但仍有许多低成本选项可供选择。

3. 带宽

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

希望这可以帮助 ;)

于 2016-02-09T16:13:14.543 回答