WebSocketに関するledlizerdのブックマーク (5)
-
こんにちは。私はSergey Kamardin︵セルゲイ・カマルディン︶です。Mail.Ru︵ロシアの電子メールサービス会社︶で開発者をしています。 この記事では、どのように私がGoを使って高負荷対応のWebSocketサーバを開発したかについて説明したいと思っています。 パフォーマンス最適化のアイデアやテクニックを通じて、WebSocketの知識はあるもののGoについてはほとんど知らないという方のお役に立てれば幸いです。 1. はじめに まずは開発に至った経緯について、どうして私たちがこのサーバを必要としたのかを説明しておきましょう。Mail.Ruには多くのステートフルなシステムがあります。ユーザのeメール保存もその1つです。システム内、およびシステムイベントの状態変更を追跡する方法にはいくつかの種類がありますが、それらは主に状態変更に関するシステム通知、または周期的なシステムのポーリ
-
BugReplay あるWeb開発者が、開発のためにchromeで通信内容をキャプチャしたいと考えchrome.webRequestを使ったが、WebSocket経由の通信は得られないことを発見した。さっそくこれをバグ報告した。 その後、インターネット上でわいせつ動画を頒布する大手Webサイトとして有名なPornhubの運営会社であるMindGeek社の社員がこのバグを修正しないようコメントした。 不思議に思って調べてみると、PornhubはWebSocketを使って広告データをやり取りすることで、AdBlock系のブラウザー拡張による広告除去を回避していることが判明した。 なお、この記事を公開して程なくして、AdBlock PlusとuBlock OriginはPornhubに対するWebSocket経由の広告除去も実装した。 技術的に可能であることを示すことと、実際に労力を割いてまで実
-
Intro ﹁Socket.IO 使ったほうがいいですか?﹂ という主旨の質問をもらった。 これは、 WebSocket が繋がらない環境に向けて、フォールバック機能を有する Socket.IO にしておいた方が良いのかという意味である。 WebSocket が出てきた当初と比べて、 Web を取り巻く状況は変わったが、変わってないところもある。 念のためと Socket.IO を使うのもよいが、﹁本当に必要なのか﹂を問うのは重要である。 Rails も ActionCableで WebSocket に対応し、ユーザも増えるかもしれないことも踏まえ、 ここで、もう一度現状について、把握している範囲で解説しておく。 "繋がらない" とは 最初に、なぜ 繋がらない ことがあるのかを、きちんと把握したい。 まず WebSocket の有史全体をみれば、繋がらないとして語られていた現象は、大きく
-
先日、古巣のCYBIRDさんのエンジニアの社内LTイベント﹁デブコミュ﹂にお呼ばれしてきた。というよりは半ば強引に参加させてもらった。イベント的には非常に熱量のある良いものだった。エンジニアが活き活きとやってて、ホント楽しかった。 その時の発表資料︵作成‥2時間︶と、コード︵作成‥3時間︶をまとめたので公開しておこうと思う。 ︻作ったもの︼ RaspberryPiに接続したセンサーの情報を、WebSocket経由でPushするサーバと、それを利用したサンプルJavaScript。 ︻どうして作ろうと思ったの?︼ 面倒なハードウェア系の処理のコードを最小限にして、それをWebSocket経由で利用できれば、JavaScriptなどからでも簡単にセンサー情報を利用したアプリケーションが作れるのではないかと思い。センサーを扱いやすくして、センサーアプリケーションを少しでも作りやすくするための環境
-
近い将来WebSocketがRailsで使用できるようになると聞くと、デベロッパはみんな舞い上がって興奮します。 しかし、 あなたのユーザは、あなたがWebSocketを使用しているかどうかなんて気にしません 。 ユーザは、”快適なリアルタイムWebアプリ”を求めている。 デベロッパは、”快適でビルドが簡単なリアルタイムWebアプリ”を求めている。 オペレーションは、”デプロイ、スケール、管理が簡単なリアルタイムWebアプリ”を求めている。 上記全ての要望をWebSocketがかなえてくれるのなら素晴らしいことですが、この実装の詳細は高いコストがかかります。 超高性能で全二重なクライアントとサーバ間の通信は、本当に私たちに必要なのか? WebSocketは、クライアントに情報を配信するための簡単なAPIと、クライアントからWebサーバへ情報を送信するための簡単なAPIを提供します。 サーバ
-
1