美文网首页
WebSocket学习

WebSocket学习

作者: seafruit | 来源:发表于2016-10-16 14:13 被阅读0次

    参考网上的各种资源而写。

    WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 设计出来的目的就是要使客户端浏览器具备像 C/S 架构下桌面系统的实时通讯能力。

    WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端直接向客户端推送数据而不需要客户端进行请求。
    在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以建立持久性的连接,并允许数据进行双向传送。
    如果将 AJAX请求和响应比喻成给服务器发短信和等待服务器回复短信,而 WebSocket 就如同和服务器打电话。

    浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。也就是我们可以使用web技术构建实时性的程序比如聊天游戏等应用。

    其实Web Sockets 的API很少,就下面这些

    websocket = new WebSocket("ws://your.socket.com:9001"); 
    // 打开
    websocket.onopen = function(evt) { /* do stuff */ }; //on open event
     // 当web socket关闭
    websocket.onclose = function(evt) { /* do stuff */ };
     // 进行通信时
    websocket.onmessage = function(evt) { /* do stuff */ };
     // 发生错误时
    websocket.onerror = function(evt) { /* do stuff */ }; 
    // 向服务器发发送消息
    websocket.send(message); //send method 
    websocket.close(); //close method 
    

    node.js写 socket非常得心应手,node.js对高并发支持相对较好,可以使用http://socket.io/

    当 Browser 和 WebSocketServer 连接成功后,会触发 onopen 消息;
    如果连接失败,发送、接收数据失败或者处理数据出现错误,browser 会触发 onerror 消息;
    当 Browser 接收到 WebSocketServer 发送过来的数据时,就会触发 onmessage 消息,参数 evt 中包含 Server 传输过来的数据;
    当 Browser 接收到 WebSocketServer 端发送的关闭连接请求时,就会触发 onclose 消息。
    

    我们可以看出所有的操作都是采用异步回调的方式触发,这样不会阻塞 UI,可以获得更快的响应时间,更好的用户体验。

    服务端大概会做下面的事情: + 创建一个socket + 绑定地址和端口 + 监听进入的连接 + 接收新的连接 + web socket 握手 + 解码数据

    相关文章

      网友评论

          本文标题:WebSocket学习

          本文链接:https://www.haomeiwen.com/subject/yibgyttx.html