Help us understand the problem. What are the problem?

こんにちは。私はSergey Kamardin(セルゲイ・カマルディン)です。Mail.Ru(ロシアの電子メールサービス会社)で開発者をしています。 この記事では、どのように私がGoを使って高負荷対応のWebSocketサーバを開発したかについて説明したいと思っています。 パフォーマンス最適化のアイデアやテクニックを通じて、WebSocketの知識はあるもののGoについてはほとんど知らないという方のお役に立てれば幸いです。 1. はじめに まずは開発に至った経緯について、どうして私たちがこのサーバを必要としたのかを説明しておきましょう。 Mail.Ruには多くのステートフルなシステムがあります。ユーザのeメール保存もその1つです。システム内、およびシステムイベントの状態変更を追跡する方法にはいくつかの種類がありますが、それらは主に状態変更に関するシステム通知、または周期的なシステムのポーリ
ことの発端 小規模な社内向けWebサービスで、データが変更されたことを通知するためにWebSocketを通信している。 そのWebサービスはキオスク化したPCからも見れるようになっているのだが、以前はChromeで全画面表示にしていた。 しかしユーザの認識のため認証させていたサービスなので、いちいちログイン画面を出すのはカッコ悪い。キオスクにはキオスクの口を用意し、各端末を認識できるようなしくみも作るべくElectronクライアントを作成した。 キオスク化すると長時間同じページを表示し続けることになるので、システムアップデート時などロジック含めての更新をしたい場合、View側からリロードをかけるもうまくいかない症状(タッチパネルが効かなくなるなど)が出ており、バックエンド側でWebSocket通信することに。 が どうにも上手くいかない・・・ コネクション時に403エラーが出る。 View
Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Webでのプッシュ技術 HTTPはクライアント(ブラウザ)からリクエストしてサーバからレスポンスが返る一問一答型のプロトコルなので、基本的にはサーバ側からブラウザに新着情報をリアルタイムで通知(プッシュ)できるようにはできていません。 しかしそれでもプッシュをしたいという場合にどうするかという話が出てきます。やり方には以下のようなものがあります。 ポーリング クライアントからサーバに定期的に新着を問い合わせるようにします。 最も原始的かつ確実なやり方。欠点は、最大でポーリング間隔の分だけ通知が遅延しうることです。 ロングポーリング(“C
前回SalesforceハッカソンにWebSocketのクイズアプリを出してきたよ~という話をしたわけだが今のところ身内以外からはほとんどアクセスされてないっぽい。 まぁほとんど宣伝してないからそれは別に構わないんだけど、審査されている形跡もないのは大丈夫なのか。。。(^^; さて、それはさておきWebSocketアプリを作ったら是非試してみたいと思っていたことのひとつにC10K問題の検証と言うのがあります。 C10Kとはクライアント1万台問題の略で平たく言うと「WebSocketってクライアントとずっとソケット繋ぎっぱにするわけだよね。そんなのクライアントの数がちょっと増えたらあっという間に破綻するんじゃね?」という問題のことです。 ★検証シナリオ 今回作ったアプリにはルーム毎にチャットの機能があるのでそれを利用することにします。 具体的な目標数値としてはとりあえず以下のように設定しまし
近い将来WebSocketがRailsで使用できるようになると聞くと、デベロッパはみんな舞い上がって興奮します。 しかし、 あなたのユーザは、あなたがWebSocketを使用しているかどうかなんて気にしません 。 ユーザは、”快適なリアルタイムWebアプリ”を求めている。 デベロッパは、”快適でビルドが簡単なリアルタイムWebアプリ”を求めている。 オペレーションは、”デプロイ、スケール、管理が簡単なリアルタイムWebアプリ”を求めている。 上記全ての要望をWebSocketがかなえてくれるのなら素晴らしいことですが、この実装の詳細は高いコストがかかります。 超高性能で全二重なクライアントとサーバ間の通信は、本当に私たちに必要なのか? WebSocketは、クライアントに情報を配信するための簡単なAPIと、クライアントからWebサーバへ情報を送信するための簡単なAPIを提供します。 サーバ
VMware上、LAN上、インターネット上のCentOS6.3で動作確認済み。WebサーバはApache。 クライアントでの確認は以下の通り。 Mac, WindowsのChrome 22, Firefox 16, Safari 6, Opera 12(動作不可), IE 9(動作不可). iPad2(iOS 5.1.1), new iPad(iOS6), iPhone4~5(iOS6)のSafari, Chrome. Galaxy S2(Android2.3.3)のブラウザ(動作不可). 目次WebSocket Chat サーバの実装WebSocket Chat クライアントの実装HTMLJavaScriptWebSocket Chat サーバの起動とアプリの実行WebSocket Chat サーバの実装 // VMware上のCentOS6で動作させたときの例 // 8888番ポートで
リアルタイムweb? リアルタイムにwebの情報をサーバからのpush通知で更新する。 有名どころでいうとFB、Chatwork、Twitterとか。 技術的には方法が大きく3つある。 ・ポーリング(Polling) 一定の時間に一度、Ajaxでサーバに接続させ 新しい情報がないかどうか調べる。擬似的なプッシュ型。 ・コメット(Comet) クライアントから送られてきたレスポンスをすぐに返さずに処理中の形を取ってコネクションを張ったままにする。 新着の情報があったタイミングでレスポンスを返す。 ・Websocket HTML5より作られた新しい通信規格。独自のプロトコルを持つ。 先程の2通りのデメリットを補いより効率よく双方向通信が可能。 今回は技術的な流れも含め、Websocketを用いる。 railsでどうやって構築する? railsを用いる事をmustとするなら調べた中だと多く3つ。
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
原文(投稿日:2012/02/26)へのリンク この数年、WebSocketの人気が高まり、利用可能になってきた。昨年末にはW3C勧告候補となり、標準化に向けてまた一歩前進した。OracleなどもJava Enterprise Editionの次バージョンに向けて、WebSocket関連 (JSR 356) の標準化を開始するようリクエストしたところだ。Chrome、Firefox、Safari、IEといったメジャーなブラウザはみな、すでにWebSocketのいずれかのリビジョンをサポートしており、最終的には標準化されたものを採用することになるだろう。近いうちに、WebSocketはWebになくてはならないものになりそうだ。しかし、WebSocketがWebのアーキテクチャスタイルであるRESTにどのようにフィットするのか、あるいはフィットするのか否か、確信が持てないでいる開発者もいる。N
はじめに 今回から全4回でリアルタイムWebの現状をとらえていきたいと思います。1回目となる今回は、リアルタイムWebについての概要です。 リアルタイムWebとは、データが集約されているサーバーの情報をリアルタイムで参照できる仕組みです。現在のWebシステムの場合、リアルタイムでサーバーの情報を得ようとすると、定期的にサーバーに問合せを行う必要があります。具体的には、クライアントスクリプトでリクエストを生成し、タイマーを使ってリクエストを投げるAjaxやMetaタグのリフレッシュ機能で、ブラウザからリクエストを定期的に投げるポーリングといった技術を使います。 これは、従来のWebシステムがHTTP通信を使ってクライアント、サーバー間の通信を行っているためです。 HTTP通信では、リクエストに応じてレスポンスを返すという1往復の通信の安全性を確保するための通信手順がとられています。そのため、
ご挨拶 こんにちは、ロンドンのNew Bambooという会社でWebエンジニアとして働いている@makoto_inoueです。ここのところ、PusherというWebSocketのクラウドサービスの開発に関わっています。今回から3回に渡ってWebSocketに関する短期連載を担当させていただきます。 私を含めたNew Bambooの面々(我々は自分たちのことをBambinoと呼んでいます)がWebSocketになぜ興味を持ったかということからはじまり、実際にクラウドサービスを始めるまでにいたったストーリーをお話ししたいと思います。そのストーリーを通じて、WebSocketが切り開く「リアルタイムWeb」な世界への可能性や技術的課題を皆さんと共有できればと思っています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く