一段js理解nodejs中js调用c++/c的过程

这篇博客探讨了如何使用Libuv库在C++中实现TCP连接。通过示例代码展示了`uv_tcp_connect`函数的用法,并且创建了一个名为`TCPWrap`的类来封装TCP连接过程。此外,还介绍了`FunctionTemplate`函数,用于动态定义具有`connect`方法的对象,以及如何设置和访问对象属性。
摘要由CSDN通过智能技术生成
// Libuv
function uv_tcp_connect(uv_tcp_t, addr,cb) { cb(); }  

  
// c++
class TCPWrap {  

  uv_tcp_t = {};  

  static Connect(cb) {  

    const tcpWrap = this[0];  

    uv_tcp_connect(

      tcpWrap.uv_tcp_t,

      {ip: '127.0.0.1', port: 80},

     () => { cb(); }

    );  

 }  

}  

function FunctionTemplate(cb) {  
   function Tmp() {
   	Object.assign(this, map);
   	cb(this);
   }
   const map = {};
   return {
   	PrototypeTemplate: function() {
   		return {
		   	set: function(k, v) {
		   		Tmp.prototype[k] = v;
		   	}
	   	}
   	},
   	InstanceTemplate: function() {
   		return {
	   		set: function(k, v) {
	   			map[k] = v;
	   		}
   		}
   	},
   	GetFunction() {
   		return Tmp;
   	}
   } 

}  

const TCPFunctionTemplate = FunctionTemplate((target) => { target[0] = new TCPWrap(); })  

TCPFunctionTemplate.PrototypeTemplate().set('connect', TCPWrap.Connect);
TCPFunctionTemplate.InstanceTemplate().set('name', 'hi');
const TCP = TCPFunctionTemplate.GetFunction();

// js
const tcp = new TCP();
tcp.connect(() => { console.log('连接成功'); });  
tcp.name;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值