Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goによる P2Pチャットシステムの開発

Avatar for h2so5 h2so5
March 26, 2015

Goによる P2Pチャットシステムの開発

Avatar for h2so5

h2so5

March 26, 2015
Tweet

More Decks by h2so5

Other Decks in Programming

Transcript

  1. 有名なチャットの プロトコル IRC   XMPP <iq from='[email protected]/castle' id='get-data-1' to='[email protected]/pda' type='result'> <data

    xmlns='urn:xmpp:bob' cid='[email protected]' max-age='86400' type='image/png'> iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0 vr4MkhoXe0rZigAAAABJRU5ErkJggg== </data> </iq> ・テキストプロトコル ・バイナリは苦手
  2. murcottのID の中身 0x 90 ネットワークID ECDSA 公開鍵のハッシュ IDの種類 ユーザー: 0.0.0.0

    グループ: 1.0.0.0 0x 01 00 00 00 0x 48 89 5c 24 28 48 ZXF3qv3i8q4y3UGboNW89n2bRy95ngwuDT BASE58 20byte
  3. MessagePack { dst: <byte[20]>, # Destination node ID src: <byte[20]>,

    # Source node ID type: <string>, # Payload type payload: <byte[]>, # Messagepack serialized payload id: <byte[20]>, # Message ID sign: { # Payload's ecdsa signature r: <byte[]>, # r s: <byte[]> # s }, ttl: <int> # TTL for broadcasts } ・JSON風の構造 ・画像もバイナリのままコンパクトに扱える ・いろいろな言語向けのライブラリがある http://msgpack.org/