はじめてOSS作りました
Socket.IOを使ってリアルタイム通信ができるサーバーサイドの雛形を実装しました。機能としてはざっと下記機能を盛り込んでいます。特筆するものはないですが、必要な機能を最初から簡単に使用できるというところが便利かと思います。
tomokazukozuma/Real-Time-Server-Side
- Websocket接続時に独自の認証機能を実装できる
- クラスターでマルチプロセスにしても接続情報を共有できる
- cookieでのセッション管理
- クライアントサイド(Socket.IO-Client)からの接続テストが簡単にできる
- 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関連の記事を下記にまとめているのでそれも是非読んでください。
- ELBとRedisを使ったSocket.IOのスケールアウト方法
- JMeter-WebSocketSamplerを使用したSocket.IOの負荷試験
- Node.jsサーバーへの正しいデプロイ方法
- Node.jsでの環境変数の設定方法
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す