最近のWebSocket事情についてまとめとく

HTML5, WebSocket

id:Jxck(@Jxck_)さんからのリクエストもありましたので、現状でのWebSocket情報をまとめておきます。

※この情報は2010/9/1時点のものです。ご覧になっている時点の情報とは変わっている可能性があります。

※2010/9/1:いろいろ更新しました。

ざっくり説明

一言で説明すると、WebServerとWebBrowser用の双方向通信用のプロトコル。

Server側からのプッシュができるので、XHRでポーリングする必要がない。

現行のWebSocket対応ブラウザ側には,same originポリシーによる制限はないようです。

仕様

最新版の仕様を確認してください。

The WebSocket API

日本語版は以下を参照

  • Web Socket protocol — websocket_jp v0.44 documentation
  • W3C - 『The Web Sockets API』日本語訳 - HTML5.JP

「仕様だけじゃよう分からん!」という人は以下を読むといいかも

  • 書籍(Amazon.co.jp: HTML5&API入門: 白石 俊平, 株式会社あゆた: 本)
  • 特集:Jettyで始めるWebSocket超入門|gihyo.jp … 技術評論社

※とりあえず一度動かしてみるとどんなものかわかるきがする。

大きな仕様変更

近頃仕様が大きく変わりました。draft75以前とdraft76以降はほぼ別ものです。

おおまかにいうと、ブラウザからサーバにつなぐときにハンドシェイクが必要なのですが、ハンドシェイクするときのヘッダ情報がかわりました。

詳しくは以下サイトを参照。

  • 「続・ハイパフォーマンスWebサイト」に書かれたWebSocket記事への更新 - Nothing ventured, nothing gained.
  • WebSocket Draft75 « ケンタテクブロ
  • Jettyで始めるWebSocket超入門:第6回 アプリケーションの作成と配布物の生成|gihyo.jp … 技術評論社

下の記事をみた感じだとまだまだ今後も仕様が変わりそうですね。

  • こてさきAjax:WebSocketプロトコルのframe仕様が変更されそう - livedoor Blog(ブログ)

Serverの対応情報

今のところ私が把握しているサーバ実装です。

  • Python

    • pywebsocket
    • django-websocket
    • gunicorn
    • meinheld
    • tornado
    • cyclone
    • txwebsockets
  • Java
    • Jetty
  • Ruby
    • em-eventmachine
    • rev-websocket
  • JavaScript
    • node.js+Socket.IO
  • Go
    • Go langのwebsocket
  • Erlang
    • MochiWebでの実装
    • shirasu - Project Hosting on Google Code→Erlangの軽量HTTPライブラリMisultinをベースにしたWebSocketフレームワークになる予定だそうです(Thanks!id:MiCHiLUさん)
  • PHP
    • phpwebsocket - Project Hosting on Google Code
  • Perl
    • typester’s anyevent-websocket-demo at master - GitHub
    • clkao’s Web-Hippie at master - GitHub
  • Clojure
    • http://github.com/ztellman/aleph:aleph

※最新版仕様の実装はpywebsocket,Goが対応が早かった。Chromeの実装確認用?( WebSocket draft 76 のサーバサイドの実装始めた方いますか? - html5-developers-jp | Google グループ )

※node.js+Socket.IO+Socket.IO-nodeはAdobe Flash Socketを使うことで、IEなど未対応のブラウザとも通信できるようにしています!素敵!(参考->node.jsのSocket IO-nodeでWebSocket - but hopeful)

Browserの対応情報

現状では75以前と76以降の両方に対応しているブラウザはありません。

各ブラウザは最新版の仕様に追従しているみたいですね。

Browser 75以前 76
IE6~8 × ×
Firefox3 × ×
Firefox4 ×
Opera10.6 × ×
Safari5 ×
Chrome4,5 ×
Chrome6 ×

※websocket.js(http://github.com/gimite/web-socket-js/)を使うことで、IEなど未対応のブラウザとも通信できる様子。上述のSocket-IO-Nodeも使っています。

ちょっと気になる発言をTwitterで発見!

web-socket-js URL でFlash fallbackが出来るのは良いんだけど。。。 #wsbof

2010-08-31 19:34:24 via web

プロキシ問題。wss (port 443) を使えば良いのだけれど、Flash fallbackだと駄目だった。誰かが修正してくれたのだけれど、今度は自己署名証明書じゃないと動かない現象 orz #wsbof

2010-08-31 19:56:34 via web

どんなことに使われてるか

エコーサーバorチャットの例が多い感じ。面白そうな取り組みを紹介します。

  • KanasanさんのVNChttp://github.com/Kanasansoft/WebSocketRemote/downloads
  • ネットワーク上に流れるパケットを可視化するデモ・アプリケーションWebGL + WebSocket DEMO — Accense Technology, Inc.
  • こてさきAjax:HTMLプレゼンをWebSocketを利用し、iPhoneから操作するツールを作ってみました. - livedoor Blog(ブログ)
  • ServerからPushするサービスPusher - Realtime client push powered by HTML5 websockets, beyond AJAX
  • ChaosProxy
    • WebSocketクライアント実装部分のソースがかなり有益http://github.com/yuiseki/chaos_proxy

その他

  • イベント

    • Tweetvite :: WebSocket BoF
  • Kanasanさんのまとめ記事

    • Shibuya.js beyond HTML5 の発表資料 (Kanasansoft Web Lab.)
  • id:makotoiのPusher紹介

    • http://www.slideshare.net/inouemak/building-realtimewebslide
  • WebSocket用ベンチマーク

    • makoto’s wsbench at master - GitHub

最近のWebSocket事情についてまとめとく相关推荐

  1. 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

    随着HTML5 WebSocket技术的日益成熟与普及,我们能够借助WebSocket来更加方便地打通BS与CS -- 由于B/S中的WebSocket能够直接连接到C/S的服务端,并进行双向通信.例 ...

  2. WebSocket 集群解决方案

    欢迎关注方志朋的博客,回复"666"获面试宝典 问题起因 最近做项目时遇到了需要多用户之间通信的问题,涉及到了WebSocket握手请求,以及集群中WebSocket Sessio ...

  3. 接收服务器显示帧控制错误,Websocket连接关闭,出现错误“接收到意外的继续帧”...

    我只是想用WebSockets.我用python编写服务器代码.服务器运行良好,但当尝试使用浏览器连接到套接字时,我得到了错误"WebSocket connection to 'ws://l ...

  4. class没有发布到tomcat_基于Tomcat的Websocket范例及permessage-deflate扩展特性的研究

    0x00 前言 当前已经成为和空气水食物并列的生存必需品的互联网,其典型的应用大多采用基于HTTP协议的B/S这一基础架构.作为自1994网景发布第一款浏览器以来就存在的这一技术体系,尽管20多年来不 ...

  5. Spring消息之WebSocket

    一.WebSocket简介 WebSocket 的定义?WebSocket是HTML5下一种全双工通信协议.在建立连接后,WebSocket服务器端和客户端都能主动的向对方发送和接收数据,就像Sock ...

  6. 分布式 WebSocket 集群解决方案

    作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...

  7. js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...

    本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...

  8. angular集成websocket_Angular + Websocket

    Angular使用RxJS,它本质上是一个反应式扩展的javascript实现.这是一个使用可观察序列组成异步和基于事件的程序的库,非常适合使用WebSockets. 简而言之,RxJS允许我们从we ...

  9. 使用四种框架分别实现百万websocket常连接的服务器--转

    原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...

最新文章

  1. php 批量导出excel文件,PHPEXCEL批量导出
  2. centos yum 重新配置dns
  3. 太空将成为数据中心冷却新前沿
  4. 以人致胜 SAP开启HR云端变革之旅
  5. Qt Creator向项目添加库
  6. 《XNA高级编程:Xbox 360和Windows》1-2
  7. nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)
  8. Haproxy基于ACL做访问控制
  9. ajax json的参数,java ajax json参数
  10. 凝思系统机器名怎么查看_机器视觉系统|工业零件生产效率和检测效率不匹配怎么办?...
  11. hdu 1698 Just a Hook(线段树区间修改)
  12. 计算机硬件格式,排版格式要求_计算机硬件及应用_IT/计算机_资料
  13. WinSock编程怎么把u_long型的IP地址转换为点分十进制
  14. 苹果宣布前CEO史蒂夫·乔布斯逝世
  15. RepVGG:算法简介及repvgg.py代码解析
  16. “海纳百川”下载器的使用方法
  17. 【Anaconda】修改conda默认envs_dirs和pkgs_dirs
  18. 最好的投资是投资自己:20本投资书单推荐
  19. SpringBoot 项目启动时设置 http 代理
  20. beeline执行sql语句_beeline执行sql脚本我世界开挂

热门文章

  1. python实现mysql事务_python连接mysql并提交mysql事务示例
  2. c语言const与*位置关系,C语言程序的存储区域与const关键字的使用方法
  3. php网站服务器工具,PHP服务器搭建网站常用工具有哪些?
  4. mysql在建站起什么作用_数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?...
  5. Oracle视图添加约束,Oracle的约束视图
  6. zigbee 串口不稳定_基于项目的ZigBee系统组网介绍
  7. an初始java运行环境错误_【环境问题】STS(eclipse)启动出现错误提示:an error hava occured,see the log......
  8. satd残差_RDO、SAD、SATD、λ(转贴) - [h.264]
  9. 微信小程序 统一支付 php,微信/微信小程序统一下单(PHP版)
  10. 用户从服务器上获取信息资源,从服务器端获取资源动态加载到场景.docx