《HTML5 WebSocket权威指南》学习笔记&1
在学习时WebSocket客户端API时,使用echo.websocket.org作为服务端,可以帮助学习者快速入门,减小学习难度,将较难的服务端学习延后。
WebSocket构造函数
WebSocket构造函数有三种,WebSocket(URL)、WebSocket(URL,protocol)、WebSocket(URL,[protocols]).
WebSocket(URL)
此种构造函数最为基础和简单,只需要传入URL就可构造WebSocket连接(HTML5代码省略)
var ws = new WebSocket("ws://echo.websocket.org");
在WebSocket中定义了两种URL方案(URL scheme ):
ws: 非加密流量 (http)
wss: 加密流量 (https)
顾名思义,两种方案的区别就在于前者不对流量加密传输,而后者使用传输层安全性(SSL)的WebSocket连接,使用Https机制采用的安全机制来保证Http连接的安全。
示例中使用的非加密方案。
WebSocket(URL,protocol)
此种构造函数传入URL以及一个协议名称来构造WebSocket连接(HTML5代码省略)
var ws2 = new WebSocket("ws://echo.websocket.org","myProtocol");
myProtocol是客户端和服务端发送和接收双方都能理解的消息的协议,运行示例,通过开发者工具,当打开此页面(或刷新)时,可以看到此WebSocket连接是失败的,因为echo.websocket.org不知道myProtocol这个连接,当吧myProtocol改为com.kaazing.echo时,可以看到开发者工具的控制台就不再输出错误信息了,因为服务端理解com.kaazing.echo这个协议;
WebSocket(URL,[protocols])
使用此构造函数时,服务端会从协议数组选取自己能理解的协议,所以这个构造函数提供了让应用程序对不同服务器使用不同协议的灵活性(HTML5代码省略)
var ws3 = new WebSocket("ws://echo.websocket.org",["com.kaazing.echo","example"]);
ws3.onopen=function(e){
//Check the protocol chosen by the server
console.log(ws3.protocol);
}
在开发者工具的控制台中,可看到com.kaazing.echo这一行的输出,因为服务端不认识example这一协议,只认识com.kaazing.echo这一协议。
注:onopen是WebSocket中的事件