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

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

h2so5
March 26, 2015

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

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/