maven項目添加websocket


最近由於項目業務需求,需要用到websocket來實現即時信息的推送,學習了一下websocket,網上搜了一下學習教程,很多版本看的我雲里霧里,最后選擇用tomcat提供的最新版本(tomcat

啟動可以查看demo)

好了,進入主題

1、新建maven項目 (websocketTest

2.添加websocket依賴的jar包

          <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>

3 客戶端代碼(用以sp實現為例)ps:在寫websocket 地址時一定要注意,ip+端口+項目名+endpoint,本人在寫這個時以為url可以隨便指定,可就是訪問不到后台,浪費了很長時間才找到原因,所以一定要是項目啟動后可以訪問的路徑加上自己定義攔截點。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>websocket client</title>
</head>
<script type="text/javascript">
var ws;
function hello(){
    ws = new WebSocket("ws://localhost:8080/websocketTest/hello");
    ws.onopen = function(evn){
        console.log(evn);
    };
    ws.onmessage = function(evn){
        console.log(evn.data);
        var dv = document.getElementById("dv");
         dv.innerHTML+=evn.data;
    };
    ws.onclose = function(){
        console.log("關閉");
    };
    
};
function subsend(){
    var msg = document.getElementById("msg").value;
    ws.send(msg);
    document.getElementById("msg").value = "";
}
</script>
<body>
    <h2>Hello World!</h2>
    <div id="dv" />
    <input type="button" value="連接" onclick="hello()" />
    <input type="text" id ="msg" /><input type="button" onclick="subsend()" value="發送" />
</body>
</html>

4.后台服務端實現

package websocket;

import java.io.IOException;

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

@ServerEndpoint("/hello")
public class WebsocketTest {
    public WebsocketTest(){
        System.out.println("WebsocketTest..");
    }

    @OnOpen
    public void onopen(Session session){
        System.out.println("連接成功");
        try {
            session.getBasicRemote().sendText("hello client...");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @OnClose
    public void onclose(Session session){
        System.out.println("close....");
        
    }
     @OnMessage      
    public void onsend(Session session,String msg){
        try {
            session.getBasicRemote().sendText("client"+session.getId()+"say:"+msg);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
     
}

最后maven install一下即可,看一下運行界面,鏈接url請求了一次一直保持通道鏈接,發送時可以看到url請求並沒有重新請求

 


免責聲明!

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



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