JavaScript去中心化代碼實現p2p通信

安裝

npm i bugout

或者使用script

<script src="https://chr15m.github.io/bugout/bugout.min.js"></script>

使用

導入Bugout

var Bugout = require('bugout')

創建Bugout服務器:

// 實例化Bugout
var  b  = new Bugout()
//  獲取要與客戶端共享的服務器地址(公鑰哈希)
//  這是客戶端將用于連接回該服務器的內容

//  注冊遠程用戶可以進行的API調用
b.register('ping', function(address, args, callback) {
  //  修改傳遞的參數并回復
  args.hello = 'Hello from ' + b.address();
  callback(args)
})

//  保存此服務器的會話密鑰種子以重新使用
localStorage['bugout-server-seed'] = b.seed

客戶端與服務器端鏈接

var b = new Bugout('服務器的公鑰')
 
//  等待,直到我們看到服務器
//  (可能要花一分鐘時間才能穿過防火墻等)
b.on('server', function(address) {
  //  一旦我們可以看到服務器
  // 對其  進行API調用
b.rpc('ping', {'hello': 'world'}, function(result) {
    console.log(result);
    //  {“ hello”:“ world”,“ pong”:true}
    //  同時檢查result.error
  });
});
 
//  保存此客戶端實例的會話密鑰種子以重新使用
localStorage['bugout-seed'] = JSON.stringify(b.seed);

客戶端和服務器與其他連接的客戶端進行交互

//  從服務器接收所有帶外消息
//  或其他任何連接的客戶端
b.on('message', function(address, message) {
  console.log('message from', address, 'is', message);
});
 
//  向所有連接的客戶端廣播未加密的消息
b.send({'hello': 'all!'});
 
//  將加密的消息發送到特定客戶端
b.send(clientaddress, "Hello!");
 
//  只要我們在這個群組中看到新客戶
b.on('seen', function(address) {
  // e.g. send a message to the client we've seen with this address
});
 
//  您也可以關閉Bugout頻道以停止接收消息等。
b.close();

補充

所有人連接共同的Bugout服務器

var b = new Bugout('特定的共享標識符')

未完待續

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。