Socket.IOでリアルタイム通信を行うOSSを作りました




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

はじめてOSS作りました

Socket.IOを使ってリアルタイム通信ができるサーバーサイドの雛形を実装しました。機能としてはざっと下記機能を盛り込んでいます。特筆するものはないですが、必要な機能を最初から簡単に使用できるというところが便利かと思います。

tomokazukozuma/Real-Time-Server-Side

  1. Websocket接続時に独自の認証機能を実装できる
  2. クラスターでマルチプロセスにしても接続情報を共有できる
  3. cookieでのセッション管理
  4. クライアントサイド(Socket.IO-Client)からの接続テストが簡単にできる
  5. RedisのPub/Sub機能を使ったスケーリングをすぐに使用できる

環境

  • Node.js v6.10.2
  • ES6 babelでトランスパイル
  • ESLint
  • Socket.IO v1.7.3

大規模スマホアプリでの実績

ソースコードは全く一緒ではないですが、自分自身が関わっていたスマホアプリでの知見を生かして実装しているので高負荷な環境でも問題なく動作することができるはずです。負荷がかかるとしたらスケールアウトするために使用するRedisになるかと思います。

使用方法

  • インストール
  • 起動

コマンドを実行する前にredisサーバーを6379ポートで立ち上げておく

  • clusterで起動
  • 1プロセスで起動(テスト用)
  • オプション付きで起動する場合

事前にbabel-cliをグローバルにインストール

  • テストコマンド
  • linter
  • テスト用接続クライアント

サーバー側を立ち上げたあと下記コマンドを実行

最後に

OSSとは自分の実装したプログラムを無料で全世界の人に公開して、不特定多数の使ってもらったり一緒に開発してもらう取り組みのことを言います。ここ数年でOSS活動をするというのがエンジニアに対する重要な評価基準となってきています。

もはや世界中のエンジニアならやってて当然でしょという感じでもありますが、日本ではまだまだ浸透していないのが現状です。

今回自分が作ったOSSはまだREAMEやソースコード内のコメントが日本語なので徐々に翻訳して少しでも多くの人に使ってもらえたらと思います。

Node.jsとSocket.IO関連の記事を下記にまとめているのでそれも是非読んでください。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です