基于 webcrt 的 p2p 实现方案, 基于 typescrit 编程, 可使用在浏览器和 nodejs (node 环境需要安装 webcrt 插件)
使用
let hash = location.hash.replace(/^#/, "");
let peerId = "aabbccdd-xx";
if (hash == "init") {
let peer = new Peer(peerId);
//## 绑定路油事件 get
peer.use("getRouter", async (data, socket) => {
console.info("getRouter", data);
//获取远程节点getName数据
let res0 = await socket.request("getName", { name: "server request client", msg: "gogo" });
console.info("res getName", res0);
return { code: 200, data: { name: "senver replay client", msg: Date.now() } };
});
} else {
let peer = new Peer();
peer.on("open", async (pid) => {//节点已经打开成功
console.info("open===", pid);
let socket = peer.connect(peerId);//连接目标节点的id
//## 绑定路油事件 get
socket.use("getName", (data) => { //
console.info("getName", data);
return { code: 200, data: { name: "client replay server", msg: Date.now() } };
});
let res = await socket.request("getRouter", { name: "lili", msg: "client req server" });
console.info("===============res getRouter", res);
});
}