2015-08-09 54 views
0

好的,所以我让我的socket.io服务器在不同的端口上侦听,但为了使它与https一起工作,我需要让它听不到传入一个端口(默认)。 (它工作正常在不同的端口加载与http,但我需要它在https上工作)socket.io.js 404(使用Apache到主机站点)

我的项目工作正常,客户端可以连接并发送数据罚款。但是,我将该网站移到了我的主域,该域具有SSL证书。该网站通过https加载所有内容,因此无法加载http版本socket.io.js

但是,现在我已将它切换到var client = require("socket.io").listen().sockets;而不是侦听不同的/特定的端口,但它仍然无法工作。不是给我一个连接错误,它根本不包括文件。

我的恐惧是,我最终需要重建我的整个网站,以通过node.js托管我的文件,我宁愿不必这样做。

我没有使用任何其他模块比mysql-nodesocket.io,并且我也希望,如果能够保持这种方式。我是node.js的新手,所以我很抱歉,如果有一个明显的答案,我不知道。

但是,我环顾四周,似乎无法在任何地方找到答案。或者,至少有一个明确的答案。

我会更好使用websockets而不是socket.io? 如果是这样,我该如何去做这件事?诚实地说,我更愿意重建我的节点应用程序,而不是重新制作我的网站。

我,包括客户端的socket.io.js文件像这样:

<script src="https://mysite/socket-io/socket.io.js"></script> 

但当然,404因为它不是一个实际的文件,该文件是我的Apache服务器上。在我的public_html目录中没有名为socket-io的文件夹/目录,所以对我来说很有意义。

但是,我怎么能得到这个工作?我需要通过node.js托管我的文件还是使用HTML5 websockets更好?我的网站用户使用移动设备的人数相当多,所以我必须确定它也适用于移动设备。

+0

为什么你使用两个独立的web服务器(Apache和node.js)来创建你的网站?你如何建立架构?您是否尝试使用Apache服务器或node.js服务器来提供socket.io.js文件? – jfriend00

回答

1

如果你打算使用apache来承载socket.io.js文件,那么你需要把这个文件放到你的Apache服务器的一个可以被Apache服务的路径上,就像任何其他的web一样文件,您希望Apache服务器提供服务。或者,您也可以从公共CDN提供socket.io.js,并使用公共CDN URL。这只是一个JS文件。您可以将它放在任何地方或使用任何到达文件将从其提供的位置的URL。让node.js和socket.io为你提供服务有一些好处,因为它确保客户端和服务器socket.io版本始终保持同步,但是你不必这样做。

如果您使用的是node.js(听起来您至少有一定的容量),那么内置于node.js中的socket.io将在您使用node.js为您提供服务时自动提供文件网页,并且您已经配置了socket.io来侦听与您的node.js Web服务器相同的端口。在这种情况下,您的网页和socket.io将使用相同的端口,并且两者都将通过node.js服务器运行。

你还没有真正解释为什么您同时使用的Node.js和Apache,怎么说的建筑作品,为什么你服务的一些网站使用Apache的,而不是仅仅使用Node.js的整个站点这当然是socket.io的更干净选项。

如果你想使用普通的webSockets而不是socket.io,但是你可能需要在webSockets之上建立一些socket.io功能(自动重新连接,消息传递等等)。 )和使用普通的webSockets不会真正简化任何Apache/node.js问题。使用Apache或node.js将socket.io.js文件提供给客户端并且一旦客户端拥有该文件就很简单,但使用普通webSockets实际上比使用socket.io更多的工作是因为额外的功能该socket.io已经建成。

+0

我使用Apache来托管我的文件,因为这是我从一开始就一直在使用的。我可能应该更清楚地解释;我使用node.js/socket.io来提供socket.io.js文件,但是我使用apache来为整个网站(和子域)提供服务。我想我可以在网站中添加socket.io项目,并包含js文件(适用于http,但不适用于https)。我不知道如何使用node.js来托管网站本身,并且会使用https工作? PHP/MySQL也可以工作吗?节点是否足够稳定以保持网站全天候运行?谢谢btw :) – Axiom

+1

@Axiom - 如果你已经在Apache上使用PHP,为什么不直接使用Apache/PHP的socket.io实现,而不是为webSockets引入一个额外的web服务器技术到你的栈? – jfriend00

+0

哦!我不知道PHP有能力这样做。谢谢。我会研究它 – Axiom