HTML5 WebSocket 通讯原理.(Java实现,附件源码)

DaN_DaN 2011-09-13
LeoChowComtop 写道
. 楼主需要加固下基础知识

你说的是指哪方面的基础哦?
代码里确实有做的不好的地方..
但是我是想尽量简单为好....
DaN_DaN 2011-09-13
KimHo 写道
说下背景和应用场景,看得一头雾水,呵呵

应用场景 rainsilence已经说了
说具体点..如果需要做即时响应的WEB应用.如:服务器收到一个事件.需要即时通知客户端做一些事件.并且.客户端是浏览器
主要方法有两种.Ajax轮询.或者服务器推.
Ajax轮询实际上不属于实时的.而且会不断求请服务器,即时没有事件.
服务器推.也想当于是socket 只不过由第三方工具实现.所以需要安装插件..如FLASH(FLASH插件) .Applet(JVM).这些都是需要在客户端安装
Websocket 是由浏览器开发者提供.属于HTML的新特性..这也是目前部分浏览器不支持的原因.
DaN_DaN 2011-09-13
shenliu 写道
DaN_DaN 写道
提前条件
1> 了解socket.
2> 了解协议,了解HTTP协议更好.(想想为什么需要协议就行.安全?保证数据完整?便于解析?)
3> 理解字节,字节序,如: 32位int 的 30转成 高字节序的字节 及是 0x00 0x00 0x00 0x1E,低字节序则 0x1E 0x00 0x00 0x00. 没数错的话是4个字节^_^

请楼主给出上面各项的参考,谢谢~~

1。Socket 属于Java网络编程那块 是TCP协议.这个可以暂时不管.
一般桌面应用比较多.再或者就是一些服务器端相对特殊一点的应用.
网上有很多这方面的资料..一搜一大把.

2.做WEB的肯定经常听到..HTTP协议.或者HTTP基于TCP..还有其他什么协议这类的..
这种想当于是一种规范...试想一下如果没有规范... IE,Firefox.等浏览器应该怎么和各种WEB服务器交互喃?
都以自己的方式去写程序?这样肯定不能通用..所以大家都遵循这种规范.实现.然后都可以互相访问了.

3. 理解字节,字节序。做JAVA的相对可能接触比较少.但是简单的..比如 int java里占4个字节. short 2字节. 等.应该有了解.
这方面和位运算比较相关.网上资料很多的.一时半会儿说不清楚.但是至少要了解 &(与),|(或),~(非),^(异或)..以及左移右移.
一般做这方面.打印的信息是以16进制打印的..但是 上面的操作却又是 二进制操作.需要转换一下
比如 int a = 3; //   二进制. 就是 0000 ... 0011;  
       a <<=2;   //  就变成 0000 ... 1100;   . 十六进制就是 0x0000000C
然后..所谓的.. int 类型益出也是这样造成的 Integer.MAX_VALUE + 1 == Integer.MIN_VALUE // true
负数表示相对麻烦一点..可以理解了正数在去看负数相关的
CurrentJ 2011-09-14
rainsilence 写道
CurrentJ 写道
rainsilence 写道
知道这个原理,加上canvas或者webgl,国人就可以写出自己的大型网页游戏。比如cs版的魔兽争霸,cs等。

webserver不就是干这个的么?

现在的主流webserver只支持http协议,而不支持ws协议。lz所干的事情就是解析了ws协议。

现在有浏览器支持么?
rainsilence 2011-09-14
CurrentJ 写道
rainsilence 写道
CurrentJ 写道
rainsilence 写道
知道这个原理,加上canvas或者webgl,国人就可以写出自己的大型网页游戏。比如cs版的魔兽争霸,cs等。

webserver不就是干这个的么?

现在的主流webserver只支持http协议,而不支持ws协议。lz所干的事情就是解析了ws协议。

现在有浏览器支持么?

全浏览器(ie9,chrome10,Firefox4(默认不开启),opera11以上)
CurrentJ 2011-09-14
rainsilence 写道
CurrentJ 写道
rainsilence 写道
CurrentJ 写道
rainsilence 写道
知道这个原理,加上canvas或者webgl,国人就可以写出自己的大型网页游戏。比如cs版的魔兽争霸,cs等。

webserver不就是干这个的么?

现在的主流webserver只支持http协议,而不支持ws协议。lz所干的事情就是解析了ws协议。

现在有浏览器支持么?

全浏览器(ie9,chrome10,Firefox4(默认不开启),opera11以上)

学习。
LeoChowComtop 2011-09-17
DaN_DaN 写道
LeoChowComtop 写道
. 楼主需要加固下基础知识

你说的是指哪方面的基础哦?
代码里确实有做的不好的地方..
但是我是想尽量简单为好....


没事,态度决定一切, 看好你
sun_jialiang 2011-09-20
你好!我对socket不太熟,你能说下你的代码如何才能正确运行吗。多谢!
DaN_DaN 2011-09-21
sun_jialiang 写道
你好!我对socket不太熟,你能说下你的代码如何才能正确运行吗。多谢!

在最后面说了..

//源码运行方式
1.WebServerSocket.main();
2.打开 socket.html (用Google Chrome)
renzhen 2011-09-25
HTML5 WebSocket在服务器端也已经相对成熟了,NodeJS的流行与他对Comet和WebSocket的支持分不开的,Java、Python、Ruby都有相对成熟的方案。客户端方面,以前有看到介绍说有一个兼容库,API与WebSocket差不多,在IE 6等不支持的使用Flash模拟,否则使用原生WebSocket。
Global site tag (gtag.js) - Google Analytics