【发布时间】:2012-05-16 14:35:11
【问题描述】:
你知道,一个网络服务器。现在我的 Socket.IO 服务器从一个 JavaScript 文件的 BATCH 文件加载。您可以使用节点并从 Web 浏览器加载 socket.io 服务器吗?像网络服务器实用工具或类似的东西。
【问题讨论】:
标签: javascript sockets node.js
你知道,一个网络服务器。现在我的 Socket.IO 服务器从一个 JavaScript 文件的 BATCH 文件加载。您可以使用节点并从 Web 浏览器加载 socket.io 服务器吗?像网络服务器实用工具或类似的东西。
【问题讨论】:
标签: javascript sockets node.js
由于WebSockets 的设计,这显然是不可能的。它从一个特殊的 HTTP 请求开始,在握手之后,丢弃 HTTP 协议并将其分解为 WebSocket 协议——一个几乎裸露的协议,类似于(但比原始 TCP 更易于管理)。由于 Web 浏览器无法处理 HTTP 请求,因此它永远无法将套接字作为服务器启动。
这样做是为了防止在用户不知情的情况下编写一个路过的僵尸网络网站以在用户不知情的情况下使用他们的计算机进行 DDOS 攻击,以及其他安全问题。
因此,如果 Flash 支持这种行为,我不会感到惊讶。 ;)(我知道 Java 可以,但谁启用 Java 小程序?)
【讨论】:
我会说你可以。并不是说我能想到一个好的用例。
您需要将启动代码放在网络服务器可以运行它的地方,并且您需要让网络服务器向浏览器返回一些信息以允许其连接。在套接字服务器启动后,您还必须将 socket.io 代码插入浏览器。
所以我认为这确实是可能的,但相当复杂,收效甚微。我想一个可能的用例是在失败后重新启动套接字服务器。实际上,我会采用稍微不同的方式,可能是通过从 Node 调用外部脚本。
【讨论】:
幸运的是,答案是否定的。如果你的意思是加载/启动,不。但是您可以在服务器上创建一个脚本,一旦客户端请求 url,就可以启动另一个服务器。
【讨论】: