p Peer-to-peer networking with browsers开源项目

我要开发同款
匿名用户2021年11月30日
34阅读
开发技术C/C++
所属分类程序开发、网络工具包
授权协议View license

作品详情

Pisforpeer-to-peernetworkingwithbrowsers

Pisasmallframeworkusedtocreatebrowser-to-browsernetworks(asopposedtojustaconnection).WithP,youcan:

ConnecttootherbrowsersusingasimpleWebSocketserver.Connecttootherbrowsersusingyourestablishedconnectionstootherbrowsers.ThisiswhatmakesPunique:itallowsfortransitiveconnectionsacrosspeers,allowingeasycreationofmeshnetworks.

Afteraconnectionisestablishedthemiddlemanisnolongernecessary–noproxiesareinvolved.

Thisismadepossiblebyanunstableandyoungtechnology--WebRTC.Currently,onlyChromeandFirefoxsupportthistechnology.

onramp,asimpleWebSocketserver,isusedasthesignalingchanneltoestablishinitialconnections.

API//InitializingvarrootNode=P.create();//createtherootnode//ConnectionmanagementvarwebSocketNode=rootNode.connect(address);//connecttoanonrampWebSocketservervarwebRtcNode=webSocketNode.connect(address);//connecttoapeerusinganonrampconnectionvarwebRtcNode=webRtcNode.connect(address);//connecttoapeerusinganexistingpeerconnectionanyNode.close();//closetheconnectionanyNode.isOpen();//returntrueiftheconnectionisopenvarnodeArray=anyNode.getPeers();//returnsanarrayofallpeerconnections//FirewallingconnectionsvarprotectedNode=P.create({firewall:function(offerData){//OnlyacceptRTCconnectionofferswhichsend'secret'astheofferdata//thisfirewallrulewillapplytoanychildnodesaswellreturnofferData==='secret';}});//SendofferDatawithaconnectionrequestanyNode.connect({address:address,offerData:'secret'});//SendingandreceivingmessageswebRtcNode.send(message);//sendamessagetoapeer;canbejson,string,orarraybufferwebRtcNode.on('message',function(message){});//listensformessagesfromapeerwebRtcNode.on('arraybuffer',function(arrayBuffer){});//listensforarraybuffersfromapeer//EventsanyNode.on('connection',function(peerNode){});//emittedwhenaconnectionismadeviathispeeranyNode.on('open',function(){});//emittedwhenthisconnectionisopenandreadyanyNode.on('close',function(){});//emittedwhenthisconnectionisclosedanyNode.on('error',function(err){});//listensforerrorsforthisconnectionanyNode.removeListener(eventName,optionalCallback);//stopslisteningtoaneventDocumentationExamplewithwalkthroughAPICookbookContributeReleaseNotes0.3.3-FixedanissueinFFwhichcauseddisconnectionsshortingaftersuccessfulconnectionsduetoaGCmiscommunicationwhichseemstocleanupDataChannelswhicharestillinuse(therebyclosingthem).0.3.2-UpdatedthelibrarytoalignitwiththelatestWebRTCstandards--mainlychangesinconfigurationobjects.0.3.1-Added'firewall'optiontofirewallRTCrequests.0.3-MajorrefactorofinternalsandsimplificationofAPI,Firefoxsupport,andrespectableunittestcoverage.0.2-Publicrelease
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论