タグ

websocketに関するakishin999のブックマーク (65)

  • フロントエンドとバックエンドのリアルタイム通信の選択肢を教えて下さい - Qiita

    これは「コードを書いていて困ったときに、suinがチャットで質問に答えたり相談に乗るsuinのプログラミング相談室(仮)」で頂いた質問と僕の回答の要約です。 質問 フロントエンドとバックエンドのリアルタイム通信の選択肢を教えて下さい。その長所短所も知りたいです。 僕の回答 こんにちは。 フロントエンドとバックエンドのリアルタイム通信の選択肢についての質問ですね。 通信方法の選択肢についてご回答します。 1. AJAXポーリング この方式は、GETリクエストなどをAJAXで数秒間隔などでバックエンドに投げ、もしレスポンスのデータに変化があったら、それをフロントエンドに反映するという手法です。 ポーリングの長所は、AJAXが分かれば他に学ぶことがないという点です。実装もかんたんです。また、バックエンドのサーバやプログラミング言語の選択肢も広いです。 短所は、無駄な通信が発生しうるということです

    フロントエンドとバックエンドのリアルタイム通信の選択肢を教えて下さい - Qiita
  • Go言語(golang)でWebsocket(melody)を使って対戦シューティングゲームを作ろう - Qiita

    概要 Go言語で、Websocketの使い方を調べていて、簡単に使えることがわかりました。 記事では、それを使った対戦シューティングゲームの作り方を詳しく解説していきたいと思います。 なお、使うGoのライブラリは以下の2つです。 - Gin ... 軽量Web Application Framework - Melody ... Websocket Framwork。Websocketライブラリのgorrilaベース。 作成するファイルは、Websocketサーバーのmain.go(250行程度)と、クライアントのindex.html(350行程度)の2つだけです。 元ネタとなるコード(Gopherくんの描画共有)は、melodyのreadme.md に書かれている50行程度のgoのコードです。これの解説と拡張した点なども併せて行っていきます。 ソースコード:https://github

    Go言語(golang)でWebsocket(melody)を使って対戦シューティングゲームを作ろう - Qiita
  • WebSocket対応した噂のALB (Application Load Balancer) を試してみた - tail my trail

    TL;DR 2016年8月にAWSのLoad Balancerが WebSocketに対応した スムーズすぎて心配になるくらい簡単に導入できる 「うまい、はやい、やすい」ので、導入しない理由はないと思う ALB Release! 巷では長らく噂になっていた、新しいAWSのLoad Balancer。 先月2016年8月11日についにリリースされた。待望のL7対応だ。 個人的に魅力の一つだったのはWebSocket対応。 従来のELBではWebSocket通信を終端できなかったため、 WebSocket通信の負荷分散/バランシングを行ったりSSL/TLS化する場合、 自前でバランシングする仕組みを実装したり、Nginxを前段に配置するなどちょっとした工夫が必要だった。 AWSのLoad BalancerがWebSocketサポートしてくれるのであれば、この設計構築および運用をアウトソース出来

    WebSocket対応した噂のALB (Application Load Balancer) を試してみた - tail my trail
  • GitHub - google/huproxy

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - google/huproxy
  • Webアプリの限界を超える方法 - Qiita

    他の投稿はこちら Webアプリの限界を超える方法(セキュリティ編) ブラウザで(WebUSBもActiveXも使わずに)FeliCaリーダーを読み込む ブラウザでブラウザを操作してスクレイピングを行う Webブラウザでシリアル通信を行う Webアプリの限界 経験豊富なwebプログラマなら、Webでは実現困難な機能を知っているでしょう。 ローカルの特定のパスに存在するファイルを自動的にアップロードしたい、 ブラウザからクローラーを起動して情報収集したい、などなど。 Webをよく知らない顧客や、技術不足のSEがそんな機能を開発しろと言い出します。 あなたは「セキュリティ上の理由から、ブラウザでそんなことは出来ない」と断ってきたことでしょう。 それ実現できます。そう、WebSocketならね。 WebSocket WebSocketがどのようにWebアプリの限界を突破するか、説明しましょう。 W

    Webアプリの限界を超える方法 - Qiita
  • Rails 5のWebSocket対応アプリでDoS脆弱性を見つけるまで(翻訳)|TechRacho by BPS株式会社

    こんにちは、hachi8833です。今回はPhusion BlogのActionCableシリーズからの翻訳記事をお送りいたします。 文中のWebSocketとActionCableについては以下をご覧ください。 Wikipedia-ja: WebSocket Railsガイド: Action Cable の概要 概要 原著者の許諾を得て翻訳・公開いたします。 元記事: Finding a DoS vulnerability in Rails 5 WebSockets Apps 原著者: Tinco Andringa 元サイト: Phusion Blog 会社: Phusion -- PassengerやUnion Stationの開発・販売で知られています 記事では、Puma上で動作するRails 5.0.0のActionCableについて述べます。PumaRailsアプリのデフォル

    Rails 5のWebSocket対応アプリでDoS脆弱性を見つけるまで(翻訳)|TechRacho by BPS株式会社
  • Rails5のActionCable(WebSocket)をPumaとnginxで本番環境で動かす - Qiita

    リアルタイムな処理をしたいときにWebSocketをする実装は、Node.jsが多いかと思いますが、結構めんどう・・・ RailsのActionCableを使ったら簡単に実装できて結構良さげ!、いざデプロイして番環境で動かそうと思うとわりとRails4時代とは同じようにいかずハマったのでメモ。 rails newした状態からスタート nginxの設定 server { listen 80 default_server; root /var/rails-server/public; location ~* \.(ico|css|gif|jpe?g|png|js|html)(\?[0-9]+)?$ { break; } location / { proxy_pass http://0.0.0.0:3000/; proxy_set_header X-Forwarded-For $proxy_a

    Rails5のActionCable(WebSocket)をPumaとnginxで本番環境で動かす - Qiita
  • あなたにおすすめするWebSocketを用いた全く新しいOAuthのご紹介 - あざらし備忘録。

    この記事は、 Advent Calendar 2016 - VOYAGE GROUP techlog の16日目のエントリです! みなさんこんにちは! VOYAGE MARKETINGにてエンジニアをしている なかにしごう (@gomachan46) | Twitter です。 2014年より社内非公式サークルとして 音ゲー部 を立ち上げ、お昼休みは会議室のプロジェクターで音ゲー鑑賞、定時後はゲームセンターで練習と、現在もなお元気に活動しています。 さて、今回はタイトルの通り WebSocketを用いた全く新しいOAuth をご紹介したいと思います。 ご存知の方も多いとは思いますが、さらっと簡単に用語の説明をしていこうと思います。 WebSocket WebSocket(ウェブソケット)は、コンピュータ・ネットワーク用の通信規格の1つである。インターネットの標準化団体であるW3CとIETF

    あなたにおすすめするWebSocketを用いた全く新しいOAuthのご紹介 - あざらし備忘録。
  • 大量接続に耐えるWebSocketアプリケーションサーバ構築のコツ - pixiv inside [archive]

    WebSocketの扱うサービスでは、長時間のコネクション、再接続処理、プロキシ、ロードバランサなど、インフラの面で多くの問題を抱えがちです。弊社のサービス「pixiv」の9周年企画でも、この問題に直面しました。 実際にそこで構築したインフラの事例をもとに、運用に使えるWebSocketサーバの構成について、pixivインフラ部の南川からご紹介します。 * 9周年企画 “黒歴史”をロケットで宇宙に飛ばす pixiv歴史 そもそも WebSocket とは? WebSocketはTCP上で動く双方向通信のための通信規格です。 Webページの読み込みで行われているような、クライアントがサーバにデータを要求し、サーバはクライアントにレスポンスを返すというHTTPの通信ルールとは違います。サーバと長時間コネクションを確立し、Socketのようにデータのやり取りを行います。そして、コネクションを

    大量接続に耐えるWebSocketアプリケーションサーバ構築のコツ - pixiv inside [archive]
  • PornhubはWebSocketを使ってAdBlockを回避している

    BugReplay あるWeb開発者が、開発のためにchromeで通信内容をキャプチャしたいと考えchrome.webRequestを使ったが、WebSocket経由の通信は得られないことを発見した。さっそくこれをバグ報告した。 その後、インターネット上でわいせつ動画を頒布する大手Webサイトとして有名なPornhubの運営会社であるMindGeek社の社員がこのバグを修正しないようコメントした。 不思議に思って調べてみると、PornhubはWebSocketを使って広告データをやり取りすることで、AdBlock系のブラウザー拡張による広告除去を回避していることが判明した。 なお、この記事を公開して程なくして、AdBlock PlusとuBlock OriginはPornhubに対するWebSocket経由の広告除去も実装した。 技術的に可能であることを示すことと、実際に労力を割いてまで実

  • WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD

    Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。

    WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD
  • socket.io が提供してくれているものは何か - from scratch

    現在開発中のシステムにリアルタイムな処理があり、そこで socket.io を使おうかなと思ってて、そういう折にタイムリーにもこの辺りの記事がタイムラインで出てきたのでメモ代わりに自分の意見を残しておく。 blog.jxck.io qiita.com socket.io が提供してくれているもの 「ブラウザとサーバ間のプロトコル」という観点で見ると socket.io は WebSocket を基として繋がらなかった時に XHR Long Polling や polling といった形式の代替手段を提供してくれるもの、という位置づけ。 一方で「ライブラリ」という観点で見ると socket.io はリアルタイムアプリケーションを作る際に必要になる処理をまとめて実装し、クライアントとサーバ間での EventEmitter として抽象化してくれているもの、という風になる。 もう少し噛み砕いて言

    socket.io が提供してくれているものは何か - from scratch
  • サーバからクライアントに送信する技術 - WebSocketを中心に - Qiita

    Webでのプッシュ技術 HTTPはクライアント(ブラウザ)からリクエストしてサーバからレスポンスが返る一問一答型のプロトコルなので、基的にはサーバ側からブラウザに新着情報をリアルタイムで通知(プッシュ)できるようにはできていません。 しかしそれでもプッシュをしたいという場合にどうするかという話が出てきます。やり方には以下のようなものがあります。 ポーリング クライアントからサーバに定期的に新着を問い合わせるようにします。 最も原始的かつ確実なやり方。欠点は、最大でポーリング間隔の分だけ通知が遅延しうることです。 ロングポーリング(“COMET”) ポーリングなのですが、問い合わせを受けたサーバは新着情報がなければレスポンスを返すのをしばらく保留します。 そのあいだに新着情報が発生すれば即座にレスポンスを返しますし、一定時間経過したら何もなかったとレスポンスを返しましょう。 飛び交う通信内

    サーバからクライアントに送信する技術 - WebSocketを中心に - Qiita
  • 「Socket.IO は必要か?」または「WebSocket は通るのか?」問題について 2016 年版 | blog.jxck.io

    Intro 「Socket.IO 使ったほうがいいですか?」 という主旨の質問をもらった。 これは、 WebSocket が繋がらない環境に向けて、フォールバック機能を有する Socket.IO にしておいた方が良いのかという意味である。 WebSocket が出てきた当初と比べて、 Web を取り巻く状況は変わったが、変わってないところもある。 念のためと Socket.IO を使うのもよいが、「当に必要なのか」を問うのは重要である。 Rails も ActionCable で WebSocket に対応し、ユーザも増えるかもしれないことも踏まえ、 ここで、もう一度現状について、把握している範囲で解説しておく。 "繋がらない" とは 最初に、なぜ 繋がらない ことがあるのかを、きちんと把握したい。 まず WebSocket の有史全体をみれば、繋がらないとして語られていた現象は、大きく

    「Socket.IO は必要か?」または「WebSocket は通るのか?」問題について 2016 年版 | blog.jxck.io
  • WebSocketには注意が必要 | POSTD

    近い将来WebSocketがRailsで使用できるようになると聞くと、デベロッパはみんな舞い上がって興奮します。 しかし、 あなたのユーザは、あなたがWebSocketを使用しているかどうかなんて気にしません 。 ユーザは、”快適なリアルタイムWebアプリ”を求めている。 デベロッパは、”快適でビルドが簡単なリアルタイムWebアプリ”を求めている。 オペレーションは、”デプロイ、スケール、管理が簡単なリアルタイムWebアプリ”を求めている。 上記全ての要望をWebSocketがかなえてくれるのなら素晴らしいことですが、この実装の詳細は高いコストがかかります。 超高性能で全二重なクライアントとサーバ間の通信は、当に私たちに必要なのか? WebSocketは、クライアントに情報を配信するための簡単なAPIと、クライアントからWebサーバへ情報を送信するための簡単なAPIを提供します。 サーバ

    WebSocketには注意が必要 | POSTD
  • Railsでチャット機能を実装する方法(実装編) - Qiita

    チャット機能を実装する場合、WebSocketを使う、Server Sent Event(SSE)を使う、Pusherなどのサービスを活用するなど、いくつかの方法がありますが、私のケースでは、WebSocketを使うのが最もマッチしていたので、WebSocketを利用することを考えます。この辺の選定についてはまた別途まとめたいと思います RailsでWebSocketを使う場合、websocket-railsを使うのが、手っ取り早くて良いのではないかと思います そこで、websocket-railsでの、チャネル、プライベートチャネル、セキュリティ、認証あたりの関係性が分かりにくかったので、自分なりに整理してみました websocket-railsの基的な使い方 Event Routerへのイベントの追加 JSクライアントからのリクエストをRailsのコントローラーとマッピングしている

    Railsでチャット機能を実装する方法(実装編) - Qiita
  • Centrifugo - Go製のリアルタイムメッセージングサーバ

    MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました チャットや通知など、Webブラウザなどとリアルタイムでコミュニケーションしたいと考える場面はたくさんあります。しかし多くのクライアントとリアルタイム通信するための基盤を作るのはとても大変です。 そこで使ってみたいのがCentrifugoです。Goで作られたWebSocketを使ったリアルタイムタイムメッセージングサーバです。 Centrifugoの使い方 まずシステムにログインします。 ダッシュボードです。ノードは一つ動作しています。 メッセージを飛ばします。メッセージはJSON形式で送信します。 受信側ではJSONフォーマットで受け取ります。 元々はCentrifugeという名前で、それをGoで書き換えることでCentrifugoとなったようです。ライブラリはPython/PHP

    Centrifugo - Go製のリアルタイムメッセージングサーバ
  • リアルタイム通信環境の(一部)構成紹介 : DSAS開発者の部屋

    こんにちは。 今回は、当社で稼働させているリアルタイム通信環境について、ご紹介させて頂きます。 ご紹介する環境に対する要件は、以下となります。 ・ゲーム内の期間限定イベントで使用し、イベント開催中のみサーバを稼働 ・リアルタイム通信。プロトコルは、websocket を使用 ・同じチームに所属するユーザを同じサーバへ接続 ・とりあえずいっぱいスケールできるように(笑 最後の要件は冗談で、実際にはちゃんとした数値を頂いているのですが、このような環境構築を依頼されましたので、AWS 上で以下にあるような構成を考えてみました。 構成図 ※ 主要なサーバのみを抜粋 ELB 外部のクライアントから、websocket な接続を受け付けます。 http(s) モードでは、websocket の通信確立に必要なヘッダが消去されてしまうため、tcp モードを使用しています。 tcp モードを有効にすると、

    リアルタイム通信環境の(一部)構成紹介 : DSAS開発者の部屋
  • Node.js+Socket.IOで作る、通信対戦ができるHTML5ゲームシステムの作り方

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog はじめまして、Yahoo!きっず開発担当です。 昨年Yahoo!きっずにてブラウザオンラインゲーム「おしゃべりリバーシ」をリリースしました。 ※おしゃべりリバーシは2015年10月をもってサービス終了しました。ご利用いただきまして、ありがとうございました。 このゲームは、通信対戦部分の通信プロトコルWebSocketを採用し、サーバミドルウェアにNode.js+Socket.IOを採用しました。この結果、ブラウザゲームでありながらマルチデバイスでの対戦を実現しました。 今回は、Node.js+Socket.IOによるWebSocketサーバのシステム構築方法について考慮すべきポイントを、「おしゃべりリバーシ」の実例を紹介しながら説

    Node.js+Socket.IOで作る、通信対戦ができるHTML5ゲームシステムの作り方
  • 「リアルタイムWEBを実現する技術」の触りを知っておく為のまとめ - Qiita

    概要 socket.ioについて周辺技術の触りをまとめておく これだけ知ってれば後から調べやすいはず 覚えること Socket.io Websocket ノンブロッキングI/O node.js Socket.ioって何? Socket.ioのページを参照 「Socket.IOは、リアルタイム双方向イベントベースの通信を可能にします。」 「これは、信頼性とスピードに均等に焦点を当て、すべてのプラットフォーム、ブラウザやデバイス上で動作します。」 解りにくいので簡単に書くと 幾つかの通信方式とサーバー、ブラウザ、デバイス間の通信を抽象化してくれるライブラリでいいはず Socket.ioが対応している通信方式 Socket.IO protocol xhr-polling xhr-multipart htmlfile websocket flashsocket jsonp-polling 抽象化し

    「リアルタイムWEBを実現する技術」の触りを知っておく為のまとめ - Qiita