リアルタイム通信の高速化とタグシステムによる運用効率化 続いて佐藤氏はリアルタイム通信高速化の取り組みを紹介。チャットやマルチバトルのパラメータ反映などで利用されるのが双方向リアルタイム通信だ。CygamesではWebSocketプロトコルを使って双方向リアルタイム通信を実装。サーバはNode.jsで、WebSocket通信とデータ送受信を実装している。 リアルタイム通信の基本的な仕組みとして、クライアントはRoomという単位でグループ化され、同じRoomIDを持ったクライアント同士でメッセージを共有する。大規模環境の場合はサーバを分散する必要があり、一般的によく使われているのがPub/Subメッセージングモデルだ。グラブルでも当初はRedisのPub/Sub機能を使って、このモデルを採用していたという。しかし、アクセス数の増加とともにRedis Pub/Sub(メッセージキュー)がボトル
Application Gateway では、あらゆる規模のゲートウェイで WebSocket がネイティブにサポートされます。 ユーザーが構成可能な、WebSocket のサポートを選択的に有効または無効にするための設定はありません。 RFC6455 で標準化された WebSocket プロトコルは、長時間に及ぶ TCP 接続上でサーバーとクライアント間の全二重通信を可能にします。 この機能により、HTTP ベースの実装では必須だったポーリングを使用することなく、Web サーバーとクライアントの間により対話的な双方向通信が可能になります。 WebSocket は、HTTP とは異なってオーバーヘッドが少なく、複数の要求や応答で同じ TCP 接続を再利用できるため、リソースをより効率的に使用できます。 WebSocket プロトコルは、従来の HTTP ポート 80 および 443 上で動
WebSocket を使って双方向通信をすることができるサーバーを ECS(Fargate) と ALB を使って構築してみます。サーバーは、 Node.js の ws を使って実装します。より安全な通信をするために wss を利用して通信したいので、証明書は AWS Certificate Manager(ACM) を使用して作成します。 構築する構成のイメージは、以下となります。 動作環境 Node.js: v16.15.1 ws: 8.11.0 ECR にリポジトリを作成 コンテナレジストリとして ECR を利用するため、リポジトリを作成します。今回はテスト用ですが、プライベートなリポジトリとしています。 リポジトリ作成後、プッシュコマンドの表示 をクリックすると、コンテナのビルドからプッシュまでのコマンドを確認することができるので、コマンドを参考にイメージをプッシュします。 Web
This is documentation for Socket.IO 3.x, which is no longer actively maintained. When deploying multiple Socket.IO servers, there are two things to take care of: enabling sticky session, if HTTP long-polling is enabled (which is the default): see belowusing the Redis adapter (or another compatible Adapter): see belowSticky load balancingIf you plan to distribute the load of connections among diff
TL;DR 今更ながら、随分前の作業メモが貯まっていたのと、もう一つの記事のつなぎとするために吐き出しておく。 WebSocket 通信のSSL/TLS通信をさせたりロードバランシングさせたい場合など、WebSocketサーバの前段にReverseProxyを置きたい時は Nginx (v1.3.13 以降) を使おうという話。 なお、AWSのELB (ALB: Application Load Balancer) を使っても実現できるようになったので、AWSで運用しているサービスの場合はALB使ったほうがお手軽省コストメリット大きいと思う。 はじめに 以前Node.js 自身でSSL/TLS通信する方法を記したが、 シングルコアで動作するNode.jsプロセスに、暗号化のオーバーヘッドまで食わせるのは非常にもったいない。 pm2などのNode.js製のクラスタリングツールでマルチプロセス
2017/02/16 Developers Summit 2017
WebSocketの扱うサービスでは、長時間のコネクション、再接続処理、プロキシ、ロードバランサなど、インフラの面で多くの問題を抱えがちです。弊社のサービス「pixiv」の9周年企画でも、この問題に直面しました。 実際にそこで構築したインフラの事例をもとに、本運用に使えるWebSocketサーバの構成について、pixivインフラ部の南川からご紹介します。 * 9周年企画 “黒歴史”をロケットで宇宙に飛ばす pixiv黒歴史 そもそも WebSocket とは? WebSocketはTCP上で動く双方向通信のための通信規格です。 Webページの読み込みで行われているような、クライアントがサーバにデータを要求し、サーバはクライアントにレスポンスを返すというHTTPの通信ルールとは違います。サーバと長時間コネクションを確立し、Socketのようにデータのやり取りを行います。そして、コネクションを
(訳注:2015/8/4、いただいた翻訳フィードバックを元に記事を修正いたしました。) 本題に入る前に強調しておきます。WebSocketは優れた通信プロトコルです。実際私はこの RFC6455 を、 Fanout のサービスで使っている( Zurl や Pushpin といったパーツで採用しています。Fanoutではまた、 Primus (異なるリアルタイムフレームワーク間での通信を可能とするラッパー)を利用し、 XMPP-FTWインターフェース を介したWebSocket通信をサポートしています。 しかしながら私はこれまで、多くの広く普及しているアプリケーションにかなりの時間を費やし、おかげでRESTやメッセージングパターンについては多少なりとも理解が深まってきた今、実はWebSocketを実装した典型的なWebアプリケーション(もしくはWebSocketライクな抽象化レイヤ)の大部分
最近 SPDY と WebSocket がアツいですね。 再来週の SPDY & WS 勉強会 も、定員100名に対して 参加者が 247 名とかなりアツいことになっています。 その予習というわけでもないですが、最近 WebSocket を実サービスへの 導入方法を考えながら遊んでいたので、 WebSocket の負荷分散方法について 考えていることを書いておこうと思います。 ステートフルな WebSocket アプリケーション HTTP サービスは基本的にステートレスな実装になっており、リクエストが来るたびに DBサーバーや memcached などのバックエンドから情報を取得して返していました。 この構成では Web アプリ自体は完全にステートレス化することができているので、 負荷分散機はラウンドロビン等のアプリケーションを無視した負荷分散をすることができました。 しかし、 WebSo
Currently there aren’t many options when it comes to proxying WebSockets. Nginx doesn’t yet fully support WebSockets out of the box, though some people have opted to take an older version and patch it. I wont go into why I eventually decided to go with HAProxy, but I will link you to an article which does a nice job of summarizing the current state of Proxies and WebSockets. Thankfully, there’s HA
I upvoted this because it is awesome, and it is, well... Bomberman.But I'm genuinely curious: at what point will we stop being fascinated by what can be done in HTML5, and actually start focusing more on what is actually being done -- regardless of the technology used. Or to put it another way: when will HTML5 games stop feeling like HTML5 games? For example, if this were on a console, I think it
Nginxとnode.jsをHAProxy+stunnelでまとめる方法についてまとめています。 サーバーの構成は以下のようになります。 前回の記事はHAProxyのインストールまで紹介しました。 http://d.hatena.ne.jp/hrendoh/20120328/1332917793 今回は、HAProxyでNginxとnode.jsのサーバーに振り分ける設定方法と、各種パラメータについて実際の設定例を基にまとめてみます。 設定のリファレンスは、公式サイトのDocumentページにリンクがあるテキストのものと、Google codeにも同じ内容のものがまとまっています。 http://haproxy.1wt.eu/download/1.4/doc/configuration.txt http://code.google.com/p/haproxy-docs/ Google co
長い記事なので、先に結論だけ書いておきます。WebSocketのバイナリメッセージ機能は、これまでのインターネットのあり方をひっくり返します。「そんなの知ってるよ」という方もいるとは思います。僕も理屈では分かってたつもりだけど、実際にアプリを作ってみて、具体的にそれを感じることができたので、ちょっと長いですがどういうことなのか説明してみます。 WebSocketとは # WebSocketは、HTML5関連の中でも特に注目を集めている技術の一つです。通常のHTTP通信であればクライアントからのリクエストなしにサーバーは応答しませんが、WebSocketを使うことでクライアントとサーバーの間で双方向の通信が可能となります。これを利用することで、今後様々なリアルタイム性の高いサービスを構築することが可能になるでしょう。 そんなWebSocketですが、これまで波乱の道を歩んできました。数年前か
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く