こんにちは。私はSergey Kamardin(セルゲイ・カマルディン)です。Mail.Ru(ロシアの電子メールサービス会社)で開発者をしています。 この記事では、どのように私がGoを使って高負荷対応のWebSocketサーバを開発したかについて説明したいと思っています。 パフォーマンス最適化のアイデアやテクニックを通じて、WebSocketの知識はあるもののGoについてはほとんど知らないという方のお役に立てれば幸いです。 1. はじめに まずは開発に至った経緯について、どうして私たちがこのサーバを必要としたのかを説明しておきましょう。 Mail.Ruには多くのステートフルなシステムがあります。ユーザのeメール保存もその1つです。システム内、およびシステムイベントの状態変更を追跡する方法にはいくつかの種類がありますが、それらは主に状態変更に関するシステム通知、または周期的なシステムのポーリ
Test a feature Our partnership with BrowserStack now lets you test your website for compatibility across 2,000+ real browsers and devices. Test on: Did you know? Next If a feature you're looking for is not available on the site, you can vote to have it included. Better yet, if you've done the research you can even submit it yourself! You can import usage data from your Google Analytics account and
WebSocket の概要 何者? WebSocket は通信プロトコルの 1 つです。ウェブサーバーとウェブブラウザとの間で双方向通信を可能とする規格です。API を W3C が、プロトコルを IETF が中 心となって規格策定を 進めています。 HTTP を応用した既存の双方向通信技術の欠点を解決する技術として開発されています。 元々は HTML5 の仕様の一部として策定が進められていましたが、現在は HTML5 から切り離され、独立したプロトコルとして規格策定作業が進められています。 ウェブサーバーとウェブブラウザ間で双方向通信ができるようになると、ウェブサーバからウェブブラウザに対して情報を Push することが可能になります。これはすなわち、Ajax を使ったなんちゃってリアルタイムアプリケーションではなく、本当のリアルタイム アプリケーションが実現できるようになるということです
ヘロー。最近は事務職が板についてきました。個人的に気が進まない作業があるときの方がコーディングや検証に力が入るのはなんでだろう。学校のテスト前に部屋の掃除が捗る的な心理状態なのかな。 えーと、オーダーメイドでモニタリングツールを作ることがたまにあって、そのツールをWebSocket対応したのでそのときのメモとサンプルコードについて。 0. こんなの 作ったのはUI的にはこんなやつです。CassandraのPendingTaskの値をリアルタイムで表示する感じ。数値が一定以上いくと色を変える、みたいな。前はグラフ化したりしてたんだけど、今回の要件においては数値の方がわかりやすかったのでこうしてある。 1. 当初の実装 次の図のような感じで値を収集/描画していた。Ajaxで逐次問い合わせを行い、リクエストを受け付けたサーバ(Server)が後段にあるデータ収集対象ノード(node)のデータをか
艦これブラウザもどきを作成していて、通信をプロキシソフトでキャプチャした後にクライアントにWebSocketで転送してAngularJSとBootstrapを利用して表示させているのだけれど、プロキシソフトの欠陥なのか不明だが接続が頻繁に途切れる。その度に自動更新ができなくなってページをリロードさせなければならなくて不便だったので手動で再接続させる処理を実装していたのだが、先日そういうライブラリが既に存在していた事を知るのであった。 joewalnes/reconnecting-websocket · GitHub 使い方はものすごく簡単で、ws = new WebSocket('ws://....');となっているところをws = new ReconnectingWebSocket('ws://....');と置換するだけで動作する。シンプル。 bower.jsonがあるのでbowerで
Adways Advent Calendar 1日目の記事です。 http://blog.engineer.adways.net/entry/advent_calendar/archive Adwaysアドベントカレンダー1日目を担当します、安藤です。 業務では主にrubyを使っていますが、今回はchannelを使いたかったのでgoにしました。(笑) 今回学習として簡素なチャットを作ってみました。 channelを使った箇所は、 入退室管理 メッセージ送信 です。 モデル 今回は一つのroomで複数のクライアントが接続するのを想定してます。(最大でどれほどのクライアントが作れるかは試してません。) package main import ( "github.com/gorilla/websocket" "log" "net/http" ) // クライアント type client str
by Nick Gauthier on 2016-03-29 Websockets are one of the core technologies MeetSpace uses to connect people on a call. In this post, we’ll look at how to get started with Websockets in JavaScript and Go. Websockets on the Server We’ll dive right into the http handler for a websocket. If you’re unfamiliar with writing http servers in Go, start with my tutorial on http servers. At this point, we hav
websocket.JSON を使った場合 JSON をやりとりする場合専用の方法がある (JSON-RPC ライクな実装を書いてみた場合) package main import ( "fmt" "log" "net/http" "code.google.com/p/go.net/websocket" ) type JSONRPCRequest struct { Method string `json:"method"` Params []interface{} `json:"params"` Id uint `json:"id"` } type JSONRPCResponse struct { Id uint `json:"id"` Result interface{} `json:"result"` Error interface{} `json:"error"` } type JS
8.2 WebSocket WebSocketはHTML5の重要な特徴です。これはブラウザに基づいたリモートsocketを実現します。ブラウザとサーバが全二重通信することができ、多くのブラウザ(Firefox、Google ChromeとSafari)ではすでにサポートされています。 WebSocketが現れる前はリアルタイム通信を実現するために、"ポーリング"とよばれる技術が全面的に採用されていました。すなわち、特定の時間間隔においてブラウザがサーバに対しHTTP Requestを送信し、サーバはリクエストを受け取った後、最新のデータをブラウザに返してリロードします。"ポーリング"ではブラウザがサーバに対して絶え間なくリクエストを送っており、大量の帯域幅を占有します。 WebSocketは特殊なパケットヘッダを採用しています。ブラウザとサーバはハンドシェイクの動作のみを必要とするだけで、
この記事はPythonのAdventCalandar2016の15日目の記事です。 Goでネットワークプログラミングの投稿に引き続き、Pythonでネットワークプログラミングの いくつかのパターンを実装してみましたのでサンプルコードと簡単な解説をしたいと思ってます。 以前、このLinuxネットワークプログラミングバイブルを読んで 第5章のIOの多重化の部分が非常に興味深くハンズオンしてきちんと理解したいと思ってたので C言語で書かれていたロジックをPython3.5.2で書き直してみました。 まず、投稿タイトルのネットワークプログラミングについては、 TCPプロトコルを利用したサーバ側のSocket通信の実装を指してます。 Socket通信にて、シンプルな通信からI/O多重化、非同期I/O、ノンブロッキングI/Oを利用したパターンを紹介し、 これらの実装を実現するための技術として、sele
First of all, let me show you the final look of the chat application that we will completed by the end of this article. We will implement the application with Flask, Gunicorn for standalone WSGI application, and Flask-SocketIO for real-time communication. 1. Scenario Let's look at an example scenario that we can use throughout this article as we build the application: Alberto wants to use our appl
Flask-SocketIO¶ Flask-SocketIO gives Flask applications access to low latency bi-directional communications between the clients and the server. The client-side application can use any of the SocketIO client libraries in Javascript, Python, C++, Java and Swift, or any other compatible client to establish a permanent connection to the server.
Webソケットを簡単に扱えるFlask拡張モジュールのFlask-SocketIOをHerokuにデプロイするにはどうしたらいいか色々調べたので忘れない為にも書いておきます。 Flask-SocketIOのGitHubリポジトリのIssuesに答えがありました。 Broken with gunicorn #16 Herokuにデプロイする際に同梱するProcfileに web: gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker module:appを書きます。ただしmoduleとなっている部分はスクリプトファイルの名前を指定します。hoge.pyならmoduleの部分はhogeとなります。 それと恐らくmodule:appのappの部分はFlaskのインスタンス名だと思います。(伝統的にFlaskはappを使うか
2012年05月09日18:29 カテゴリプログラミング Pythonによるsocket programming入門 以下では、最近僕が学んだネットワークプログラミングの概要と、TCP及びUDPによるServer/ClientのPython(2.7)による実装についてまとめています。ネットワーク特有の概念に関して、導入の意図を自分なりに納得できるような形でなるべく詳しく書いたのですが、このあたりについて不適切だと思われる点を発見した方は、ご一報いただけると幸いです。具体的なコードは、下の方に書いてあります。なお、この記事は主に次の本で得た知識をもとに書かれています。 Core Python Applications Programming (3rd Edition) (Core Series) 著者:Wesley J Chun 販売元:Prentice Hall (2012-03-09)
Socket Programming HOWTO¶ Author: Gordon McMillan Sockets¶ I’m only going to talk about INET (i.e. IPv4) sockets, but they account for at least 99% of the sockets in use. And I’ll only talk about STREAM (i.e. TCP) sockets - unless you really know what you’re doing (in which case this HOWTO isn’t for you!), you’ll get better behavior and performance from a STREAM socket than anything else. I will t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く