Peerjs: ์˜ค๋ฅ˜ PeerServer: ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 09์›” 04์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: peers/peerjs

๋‚ด ์„œ๋ฒ„ ์ฝ˜์†”์˜ ์ œ๋ชฉ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ฒ˜์Œ์—๋Š” ์ž์ฒด ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž๋™์œผ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ์—ฐ๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ์—ฐ๊ฒฐ์ด ์—ด๋ฆฌ์ง€ ์•Š์Œ). ์ด ๋ชจ๋“  ๊ฒƒ์ด localhost์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ธก ์ฝ”๋“œ:

       var peer
       var conn
       if (window.location.pathname == '/client') {
         peer = new Peer('tactiks_guestb', {
           host: 'localhost',
           port: 8081,
           path: '/peerjs'
         })
         conn = peer.connect('tactiks_hostb')
         conn.on('open', () => {
           conn.send('hi!');
         });
         this.peer = peer
         this.conn = conn
         conn.on('error', console.log)
         peer.on('error', console.log)

       } else {
         peer = new Peer('tactiks_hostb', {
           host: 'localhost',
           port: 8081,
           path: '/peerjs'
         })
         this.peer = peer
         peer.on('error', console.log)
         peer.on('connection', (conn) => {
           conn.on('error', console.log)
           this.conn = conn
           conn.on('data', (data) => {
             console.log(data)
           })

         })
       }

์„œ๋ฒ„์ธก ์ฝ”๋“œ:

var express = require('express')
var app = express()

srv = app.listen(8081)
var ExpressPeerServer = require('peer').ExpressPeerServer;
var ps = ExpressPeerServer(srv, {
      debug: true
})

app.use('/peerjs', ps)
ps.on('connection', (id) => {
    console.log(id)
    console.log(srv._clients)
})
missing info

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฐฐ์—ด์˜ ["LEAVE", "CANDIDATE", "OFFER", "ANSWER"]๋Š” ๋ˆ„๋ฝ๋œ ๋ฉ”์‹œ์ง€ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.... Peerjs์˜ ๊ฒฝ์šฐ HEARTBEAT๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ HEARTBEAT๋ฅผ ["LEAVE", "CANDIDATE", "OFFER", "ANSWER","HEARTBEAT" ]๋กœ ์ถ”๊ฐ€ํ•œ ํ›„ ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

@kahrkunne ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹ญ๋‹ˆ๊นŒ?

์„œ๋ฒ„์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ Peer Server ๋ฒ„์ „ 0.2.10 ๋ฐ Peerjs ๋ฒ„์ „ 1.1.0์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” Electron์—์„œ ์‹คํ–‰๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(Chrome 77.0.3865.120 ๋ฐ Firefox 69.0.3 ๋ชจ๋‘ ํ…Œ์ŠคํŠธ).

ํด๋ผ์ด์–ธํŠธ๊ฐ€ peer.connect(peerID)๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋Š” peer\lib\util.js:27์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ์ด๋Š” peer\lib\server.js ํ–‰ 91๋กœ ๋‹ค์‹œ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค.

if ๋ฌธ์€ ๋ฉ”์‹œ์ง€๊ฐ€ CANDIDATE ๋˜๋Š” OFFER์ธ ๊ฒฝ์šฐ์—๋„ ํ•ญ์ƒ else๋กœ ํ•ด์„๋˜๊ณ  util.prettyError๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  socket.on("message", function(data) {
    try {
      var message = JSON.parse(data);

      if (
        ["LEAVE", "CANDIDATE", "OFFER", "ANSWER"].indexOf(message.type) !== -1
      ) {
        self._handleTransmission(key, {
          type: message.type,
          src: id,
          dst: message.dst,
          payload: message.payload
        });
      } else {
        util.prettyError("Message unrecognized");
      }
    } catch (e) {
      self._log("Invalid message", data);
      throw e;
    }
  });
        util.prettyError("Message unrecognized");
      }
    } catch (e) {
      self._log("Invalid message", data);
      throw e;
    }

์—…๋ฐ์ดํŠธ: ๋ชจ๋“  ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ํ˜„์žฌ HEARTBEAT์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. CANDIDATE ๋ฐ OFFER๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฐ์—ด์˜ ["LEAVE", "CANDIDATE", "OFFER", "ANSWER"]๋Š” ๋ˆ„๋ฝ๋œ ๋ฉ”์‹œ์ง€ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.... Peerjs์˜ ๊ฒฝ์šฐ HEARTBEAT๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ HEARTBEAT๋ฅผ ["LEAVE", "CANDIDATE", "OFFER", "ANSWER","HEARTBEAT" ]๋กœ ์ถ”๊ฐ€ํ•œ ํ›„ ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๊ณง ํ•ด๊ฒฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰