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




はじめて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になるかと思います。

使用方法

  • インストール
git clone https://github.com/tomokazukozuma/Real-Time-Server-Side.git
cd Real-Time-Server-Side
npm install
  • 起動

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

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

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

npm install -g babel-cli
WsGroup=ws01 babel-node app.js --port 3001
  • テストコマンド
npm run test
  • linter
npm run lint
  • テスト用接続クライアント

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

npm run start:client

or

babel-node client/app.js --port 3001

最後に

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

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

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

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

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

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