我可以在浏览器中启动一个 socket.io/websocket 服务器吗?
Can I start a socket.io/websocket server in browser?
之前有人问过这个问题,答案是否定的。但是现在,有了 browserify/webpack,我是否可以像在服务器上那样编写代码,它会在浏览器中 运行,或者是否有任何限制使这不可能?
不,你不能。在浏览器中启动服务器需要访问浏览器中根本不存在的低级功能。 Browserify 无法向浏览器添加基本 low-level 功能,而浏览器没有这些功能需要额外的本机代码支持才能正常工作。
Browserify 只能打包纯 Javascript 或构建在浏览器中已存在的基础架构之上的代码,或者可以使用构建在功能之上的一些纯 javascript 来模拟的代码确实存在于浏览器中。
因此,例如,您可以从 node.js 中获取一个纯 javascript 的加密哈希库,并且不依赖浏览器中不存在的任何功能,您可以对其进行浏览器化(例如重新打包)以在浏览器中使用它。但是,您不能采用使用 low-level UDP 通信的 node.js 包,因为浏览器中不存在对 UDP 的底层访问。
一般来说,如果 node.js 代码执行 I/O 或操纵其他进程或使用任何具有本机代码的模块,它可能无法与 browserify 一起工作(有一些 work-arounds 和一些文件 I/O).
有关更多信息,请参阅:
所以您没有说明您要解决的实际问题是什么,但通常您会在某处启动一个实际的服务器并让浏览器连接到该服务器。如果您希望某个特定的浏览器会话显示为 "master",您当然可以让 client/server 以这种方式运行。对于连接到同一服务器的其他客户端,一个客户端可能是主控方(看起来本质上是服务器本身)。这一切都取决于您如何对服务器进行编程以及它如何与连接到它的各种客户端进行通信。实际服务器可以成为其他客户端的代理,客户端可以通过代理连接到实际服务器来访问 server-like 功能。
之前有人问过这个问题,答案是否定的。但是现在,有了 browserify/webpack,我是否可以像在服务器上那样编写代码,它会在浏览器中 运行,或者是否有任何限制使这不可能?
不,你不能。在浏览器中启动服务器需要访问浏览器中根本不存在的低级功能。 Browserify 无法向浏览器添加基本 low-level 功能,而浏览器没有这些功能需要额外的本机代码支持才能正常工作。
Browserify 只能打包纯 Javascript 或构建在浏览器中已存在的基础架构之上的代码,或者可以使用构建在功能之上的一些纯 javascript 来模拟的代码确实存在于浏览器中。
因此,例如,您可以从 node.js 中获取一个纯 javascript 的加密哈希库,并且不依赖浏览器中不存在的任何功能,您可以对其进行浏览器化(例如重新打包)以在浏览器中使用它。但是,您不能采用使用 low-level UDP 通信的 node.js 包,因为浏览器中不存在对 UDP 的底层访问。
一般来说,如果 node.js 代码执行 I/O 或操纵其他进程或使用任何具有本机代码的模块,它可能无法与 browserify 一起工作(有一些 work-arounds 和一些文件 I/O).
有关更多信息,请参阅:
所以您没有说明您要解决的实际问题是什么,但通常您会在某处启动一个实际的服务器并让浏览器连接到该服务器。如果您希望某个特定的浏览器会话显示为 "master",您当然可以让 client/server 以这种方式运行。对于连接到同一服务器的其他客户端,一个客户端可能是主控方(看起来本质上是服务器本身)。这一切都取决于您如何对服务器进行编程以及它如何与连接到它的各种客户端进行通信。实际服务器可以成为其他客户端的代理,客户端可以通过代理连接到实际服务器来访问 server-like 功能。