?????.WebSocket??????
????????????????????????HTTPЭ?????????????Web??????渴??????????????????????HTML5???????WebSocketЭ?鱻??????????????????????????????????????????????????????????????????????????????????????
??????????????????HTTPЭ??????????????????request?????????????? ??????????????????????д??????response???????????????????????????????????????????????????????????????????Web?? ????????仯???????Web???????????鷳??С?????????漰???????Web????????????????????м??????????????????????????? ?á???WebSocket?淶??????????????????????Щ???????????????????????????????????????polling????Comet???????????????????????????????????????????
??????????????????Web?????????????????????????????趨????????????????????????????????????????μ?????????????????????????1???????????????????????????????
????Comet?????????????????????????????????????????????????????С?????????????????Щ?????趨?????????????????????????????????????????????????????????????????????????????????????????????????????????????HTTP?????????????????????????????HTTP??????????????????????????????????????????????????????????????????????????£???????鵽???????????
????????????????????????-????????????????????????????????????????????????????????????????????????????????????????????????
??????????HTML5?????WebSocket???????????Web?????????B/S???????C/S???????????????WebSocket????????????? ?????????????JavaScript?????????????WebSocket???????????WebSocket???????????????????????????? TCP???????????????WebSocket???????????TCP????????????δ????????????????????????????????????????????Comet????С ?????????????????WebSocket?淶???????????WebSocket??Java Web?е?????
????JavaEE 7?г???JSR-356:Java API for WebSocket?淶??????Web????????Tomcat??Nginx??Jetty??????WebSocket??Tomcat??7.0.27?????? WebSocket????7.0.47??????JSR-356???????Demo????????????????Tomcat7.0.47?????汾???????С?
??????.WebSocket???
????2.1.???JavaWeb???????
??????pom.xml?????Jar??????

????1 <dependency>
????2         <groupId>javax</groupId>
????3         <artifactId>javaee-api</artifactId>
????4         <version>7.0</version>
????5         <scope>provided</scope>
????6 </dependency>

??????????Web?????????

1 <%@ page language="java" pageEncoding="UTF-8" %>
2 <!DOCTYPE html>
3 <html>
4 <head>
5     <title>Java???WebSocket??Tomcat???</title>
6 </head>
7 <body>
8     Welcome<br/><input id="text" type="text"/>
9     <button onclick="send()">???????</button>
10     <hr/>
11     <button onclick="closeWebSocket()">???WebSocket????</button>
12     <hr/>
13     <div id="message"></div>
14 </body>
15
16 <script type="text/javascript">
17     var websocket = null;
18     //?ж??????????????WebSocket
19     if ('WebSocket' in window) {
20         websocket = new WebSocket("ws://localhost:8080/websocket");
21     }
22     else {
23         alert('???????? Not support websocket')
24     }
25
26     //??????????????????
27     websocket.onerror = function () {
28         setMessageInnerHTML("WebSocket???????????");
29     };
30
31     //??????????????????
32     websocket.onopen = function () {
33         setMessageInnerHTML("WebSocket??????");
34     }
35
36     //????????????????
37     websocket.onmessage = function (event) {
38         setMessageInnerHTML(event.data);
39     }
40
41     //?????????????
42     websocket.onclose = function () {
43         setMessageInnerHTML("WebSocket??????");
44     }
45
46     //??????????????????????????????????websocket????????????????????????server?????????
47     window.onbeforeunload = function () {
48         closeWebSocket();
49     }
50
51     //???????????????
52     function setMessageInnerHTML(innerHTML) {
53         document.getElementById('message').innerHTML += innerHTML + '<br/>';
54     }
55
56     //???WebSocket????
57     function closeWebSocket() {
58         websocket.close();
59     }
60
61     //???????
62     function send() {
63         var message = document.getElementById('text').value;
64         websocket.send(message);
65     }
66 </script>
67 </html>