tomcat支持的websocket服務


首發:個人博客

在tomcat7之后的版本,寫個websocket服務程序非常容易——
如以下代碼所示,當客戶端建立了一個連接並發送了一些什么內容到服務器,服務器將每隔兩秒返回一個字符串“world”。
之所以演示每兩秒返回一次是為了說明這是長連接而不是短連接。

import java.io.IOException;

import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/test")
public class MyTest {

    @OnMessage
    public void onMessage(String message, Session session) 
        throws IOException, InterruptedException {
        System.out.println("客戶端說:" + message);
        
        while(true){
            session.getBasicRemote().sendText("world");
            Thread.sleep(2000);
        }
    }
    
}

網頁只需要這樣寫:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello WebSocket</title>
</head>
<body>
    <div id="content"></div>
    <button onclick="sayHello()">打招呼</button>

    <script type="text/javascript">
        var webSocket = 
            new WebSocket('ws://localhost:8080/dyna/test');

        webSocket.onerror = function(event) {
            onError(event)
        };

        webSocket.onopen = function(event) {
            onOpen(event)
        };

        webSocket.onmessage = function(event) {
            onMessage(event)
        };

        function onMessage(event) {
            document.getElementById('content').innerHTML += '<br />服務器說:' + event.data;
        }

        function onOpen(event) {
            document.getElementById('content').innerHTML = '連接成功';
        }

        function onError(event) {
            document.getElementById('content').innerHTML = '出現錯誤';
        }

        function sayHello() {
            webSocket.send('hello');
            return false;
        }
    </script>
</body>
</html>

調試的時候發現tomcat7的支持不是特別好,
在eclipse里添加server然后在上面跑項目,不支持websocket;
用在server.xml里添項目的方式,也不支持websocket。

所以換成tomcat8,在eclipse里添加server然后跑項目,websocket也好使。
這樣調試就很方便了。


TODO:
1.maven的tomcat7:run個別項目出現奇怪的問題;maven集成tomcat8的實驗有時間做做
2.spring4對websocket的支持怎么試都不成功,有時間攻克它。
3.把今天學的即使通訊技術與websocket結合,做網頁版qq之類的demo。

長期歡迎項目合作機會介紹,項目收入10%用於酬謝介紹人。新浪微博: @冷鏡,QQ:908789432。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM