12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- var Gun = require('../gun');
- Gun.on('opt', function(root){
- var opt = root.opt;
- if(false === opt.ws || opt.once){
- this.to.next(root);
- return;
- }
- var url = require('url');
- opt.mesh = opt.mesh || Gun.Mesh(root);
- opt.WebSocket = opt.WebSocket || require('ws');
- var ws = opt.ws = opt.ws || {};
- ws.path = ws.path || '/gun';
-
- if(!ws.noServer){ ws.server = ws.server || opt.web }
- ws.web = ws.web || new opt.WebSocket.Server(ws);
- ws.web.on('connection', function(wire){ var peer;
- wire.upgradeReq = wire.upgradeReq || {};
- wire.url = url.parse(wire.upgradeReq.url||'', true);
- opt.mesh.hi(peer = {wire: wire});
- wire.on('message', function(msg){
- opt.mesh.hear(msg.data || msg, peer);
- });
- wire.on('close', function(){
- opt.mesh.bye(peer);
- });
- wire.on('error', function(e){});
- setTimeout(function heart(){ if(!opt.peers[peer.id]){ return } try{ wire.send("[]") }catch(e){} ;setTimeout(heart, 1000 * 20) }, 1000 * 20);
- });
- this.to.next(root);
- });
|