如何将 Node.js 中的 net 模块与 browserify 一起使用?

Posted

技术标签:

【中文标题】如何将 Node.js 中的 net 模块与 browserify 一起使用?【英文标题】:How to use the net module from Node.js with browserify? 【发布时间】:2015-08-30 03:02:27 【问题描述】:

我想在客户端(在浏览器中)使用来自 Node.js 的 net 模块:

var net = require('net');

所以我查找了如何将 Node.js 模块发送到客户端,browserify 似乎是答案。我用 jQuery 试了一下,效果很好。 但由于某种原因,net 模块不想工作。如果我写require('jquery') 它可以正常工作,但如果我写require('net') 它就不行,这意味着我捆绑的.js 文件是空的。

我试图搜索其他内容,但我找到的唯一内容是net-browserify on Github。有了这个,至少我的 bundle.js 文件被填满了,但是我在使用这个时遇到了一个 javascript 错误(它与 connect 函数有关)。

这是我在服务器端运行良好的代码:

var net = require('net-browserify');
//or var net = require('net');

var client = new net.Socket();
client.connect(port:25003, function() 
    console.log('Connected');
    client.write('Hello, server! Love, Client.');
);

client.on('data', function(data) 
    console.log('Received: ' + data);
    client.destroy(); // kill client after server's response
);

client.on('close', function() 
    console.log('Connection closed');
);

我假设 net-browserify 允许您使用特定的 connect 函数,但我不知道是哪个。

如何在客户端使用 Node.js 的 net 模块?

【问题讨论】:

【参考方案1】:

这是因为net 让您可以访问原始 TCP 套接字——浏览器在 JavaScript 端根本无法做到这一点。在编写这样的 API(允许任意 tcp 流量)之前,net 不可能被移植到客户端。

如果您想将 tcp 数据从客户端发送到服务器,最好的选择是使用使用 socket.io module 或 ws 的 Web 套接字。

如果您希望客户直接交流,最好的办法是研究 WebRTC

【讨论】:

以上是关于如何将 Node.js 中的 net 模块与 browserify 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

node.js中net网络模块TCP服务端与客户端的使用

node.js 中的代理身份验证与模块请求

如何将 .then() 中的值从 Node.js 模块返回到服务器文件?

Node.js权威指南 - 实现基于TCP与UDP的数据通信

Node中的Http模块和Url模块的使用

如何从 Node.js IMAP 模块中的正文获取纯文本