您现在的位置:首页 >> 前端 >> 内容

webSocket的那些事儿

时间:2017/8/17 9:13:00 点击:

  核心提示:如果你想创建一个应用,浏览器与服务器需要正式的对话,那你可能使用XMLHttpRequest对象,使用xmlHttpRequest对象在很多时候是没有问题的,但同样也有很多情况不合适。首先,XMLHt...

如果你想创建一个应用,浏览器与服务器需要正式的对话,那你可能使用XMLHttpRequest对象,使用xmlHttpRequest对象在很多时候是没有问题的,但同样也有很多情况不合适。首先,XMLHttpRequest不适合快速的来回发送多条消息。其次没有办法将一次调用与下一次调用联系起来,每次网页发送请求,服务器都要确定请求来自何方。在这种情况下,要想把一系列请求关联起来,服务器代码会变得非常的复杂。所以现在出现了WebSocket,根据websocket,浏览器能够保持对web服务器打开的连接,从而服务器长时间交换数据。

webSocket主要用来编写聊天程序,多人游戏或者端对端的协作工具,但是websocket的服务器端的代码相对比较复杂,这里不做介绍,后面总结php这一块的时候再详细介绍。

下面直接上代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Document</title>  
</head>  
<body>  
    <input type="text" id="txt">  
    <button id="send">连接</button>  
    <button id="close">关闭连接</button>  
    <script type="text/javascript">  
        window.onload=function(){  
            var websocket;  
            var oTxt = document.getElementById("txt");  
            var oClose = document.getElementById("close");  
            var oSend = document.getElementById("send");  
            // 建立连接,这里的ws是一种连接协议  
            websocket = new WebSocket("ws://localhost:90/html5/websocketserver.php");  
            // websocket有四个事件  
            // onOpen建立连接后触发  
            // onError出现问题时触发  
            // onClose连接关闭时触发  
            // onMessage从服务器收到消息时触发  
            oClose.onclick=function(){  
                websocket.onclose = connectionClose;  
            }  
            oSend.onclick=function(){  
                websocket.onopen = connectionOpen;  
            }  
            websocket.onmessage = messageReceived;  
            websocket.onerror = errorOccurred;  
            // 连接成功发送一条消息  
            function connectionOpen(){  
                websocket.send("username:"+oTxt.value);  
            }  
            function messageReceived(e){  
                console.log("你接收到的数据为"+e.data);  
            }  
            function errorOccurred(){  
                alert("服务器连接出错");  
            }  
            function connectionClose(){  
                alert("连接已经关闭");  
            }  
        }  
    </script>  
</body>  
</html>  

Tags:WE EB BS SO 
作者:网络 来源:xiaoD的博客