Thursday 26 November 2015

Regarding mdns on node.js with socket.io

I am trying to build a socket.io service that clients can discover servers over mdns. I kind of got some of it nailed down, but I can't figure out how to make the mdns browser part working. Ideally, clients would discover servers on their own and connect to it with socket.io-client.// server.js var mdns = require('mdns'); var http = require('http'); var io = require('socket.io'); var ad = mdns.createAdvertisement(mdns.tcp('http'), 8000); ad.start(); var server = http.createServer(); var socket = io(http); server.listen(8000); Now the client side is where it gets complicated for me:// client.js var mdns = require('mdns'); var io = require('socket.io-client'); var browse = mdns.createBrowser(mdns.tcp('http')); browse.on('serviceUp', function (service) { var socket = io.connect('http://' + service.host + ':' + service.port); // this will get lots of "service" objects for every interface (I have multiple network interfaces). Which I only need one socket.io connection. How do I maintain 1 connection and forget the others? }); browse.start(); Client.js idea 1:// initialize socket variable outside of listener. var socket; browse.on('serviceUp', function (service) { if (socket === undefined) { socket = io.connect('http://' + service.host + ':' + service.port); // this only assigns "socket" variable once, which is kind of good. } }); // This, however, obviously does not work. (no method 'on' for undefined) socket.on('event', function (data) { // do stuff with data. }); Client.js idea 2: undefined

Submitted November 27, 2015 at 05:31AM by zachary87921

No comments:

Post a Comment