最近のWebSocket事情についてまとめとく
最近の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で発見!
![](http://a1.twimg.com/profile_images/829056757/takuyalatest_normal.jpg)
web-socket-js URL でFlash fallbackが出来るのは良いんだけど。。。 #wsbof
2010-08-31 19:34:24 via web
![](http://a1.twimg.com/profile_images/829056757/takuyalatest_normal.jpg)
プロキシ問題。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事情についてまとめとく相关推荐
- 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们能够借助WebSocket来更加方便地打通BS与CS -- 由于B/S中的WebSocket能够直接连接到C/S的服务端,并进行双向通信.例 ...
- WebSocket 集群解决方案
欢迎关注方志朋的博客,回复"666"获面试宝典 问题起因 最近做项目时遇到了需要多用户之间通信的问题,涉及到了WebSocket握手请求,以及集群中WebSocket Sessio ...
- 接收服务器显示帧控制错误,Websocket连接关闭,出现错误“接收到意外的继续帧”...
我只是想用WebSockets.我用python编写服务器代码.服务器运行良好,但当尝试使用浏览器连接到套接字时,我得到了错误"WebSocket connection to 'ws://l ...
- class没有发布到tomcat_基于Tomcat的Websocket范例及permessage-deflate扩展特性的研究
0x00 前言 当前已经成为和空气水食物并列的生存必需品的互联网,其典型的应用大多采用基于HTTP协议的B/S这一基础架构.作为自1994网景发布第一款浏览器以来就存在的这一技术体系,尽管20多年来不 ...
- Spring消息之WebSocket
一.WebSocket简介 WebSocket 的定义?WebSocket是HTML5下一种全双工通信协议.在建立连接后,WebSocket服务器端和客户端都能主动的向对方发送和接收数据,就像Sock ...
- 分布式 WebSocket 集群解决方案
作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...
- js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...
本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...
- angular集成websocket_Angular + Websocket
Angular使用RxJS,它本质上是一个反应式扩展的javascript实现.这是一个使用可观察序列组成异步和基于事件的程序的库,非常适合使用WebSockets. 简而言之,RxJS允许我们从we ...
- 使用四种框架分别实现百万websocket常连接的服务器--转
原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...
最新文章
- php 批量导出excel文件,PHPEXCEL批量导出
- centos yum 重新配置dns
- 太空将成为数据中心冷却新前沿
- 以人致胜 SAP开启HR云端变革之旅
- Qt Creator向项目添加库
- 《XNA高级编程:Xbox 360和Windows》1-2
- nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)
- Haproxy基于ACL做访问控制
- ajax json的参数,java ajax json参数
- 凝思系统机器名怎么查看_机器视觉系统|工业零件生产效率和检测效率不匹配怎么办?...
- hdu 1698 Just a Hook(线段树区间修改)
- 计算机硬件格式,排版格式要求_计算机硬件及应用_IT/计算机_资料
- WinSock编程怎么把u_long型的IP地址转换为点分十进制
- 苹果宣布前CEO史蒂夫·乔布斯逝世
- RepVGG:算法简介及repvgg.py代码解析
- “海纳百川”下载器的使用方法
- 【Anaconda】修改conda默认envs_dirs和pkgs_dirs
- 最好的投资是投资自己:20本投资书单推荐
- SpringBoot 项目启动时设置 http 代理
- beeline执行sql语句_beeline执行sql脚本我世界开挂
热门文章
- python实现mysql事务_python连接mysql并提交mysql事务示例
- c语言const与*位置关系,C语言程序的存储区域与const关键字的使用方法
- php网站服务器工具,PHP服务器搭建网站常用工具有哪些?
- mysql在建站起什么作用_数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?...
- Oracle视图添加约束,Oracle的约束视图
- zigbee 串口不稳定_基于项目的ZigBee系统组网介绍
- an初始java运行环境错误_【环境问题】STS(eclipse)启动出现错误提示:an error hava occured,see the log......
- satd残差_RDO、SAD、SATD、λ(转贴) - [h.264]
- 微信小程序 统一支付 php,微信/微信小程序统一下单(PHP版)
- 用户从服务器上获取信息资源,从服务器端获取资源动态加载到场景.docx