基於tomcat支持完成的WebScoket實現(一對一,一對多聊天)

1、配置好web服務器環境(tomcat最低7.0以上,建議8.0)
2、java代碼

package com.test.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(value = "/message")
public class WebSocketDemo {

    @OnOpen
    public void openSocket() { // 打開websocket連接
        System.out.println("通訊連接已打開,可以進行通話!");
    }

    @OnMessage
    public void dealSocket(String message, Session session) { //數據處理
        System.out.println("處理數據。。。");
        try {

            session.getBasicRemote().sendText(message); //迴應的數據
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @OnClose
    public void closeSocket() { //關閉websocket連接
        System.out.println("通訊連接已斷開。。。");
    }
}

3、html頁面

<%@ 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>Insert title here</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/validator/jquery.validate.min.js"></script>
<link type="text/css" rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<!-- <script type="text/javascript" src="js/pages/websocket_demoa.js"></script> -->
<script type="text/javascript">
$(function() {
    var webSocket = null ;
    var url = "ws://localhost:8080/WebSocketProject/message" ; //通訊地址
    init() ;
    webSocket.onopen = function(e) { //打開websocket連接
        $("#contentDiv").append("<p>連接成功。。。</p>") ;
    }
    webSocket.onclose = function(e) {//關閉websocket連接
        $("#contentDiv").append("<p>退出交談。。。</p>") ;
    }
    $("#but").on("click",function(){ 
        var info = $("#message").val() ;
        webSocket.send(info) ; // 消息發送
        $("#contentDiv").append("<p>發送:" + info + "</p>") ;
    });
    webSocket.onmessage = function(e) { //websocket迴應處理
        $("#contentDiv").append("<p>迴應:" + e.data + "</p>") ;
    }
    function init() {// 初始化操作,判斷瀏覽器是否支持websocket通訊
        if ('WebSocket' in window) {
            webSocket = new WebSocket(url) ;
        } else {
            if ('MozWebSocket' in window) {
                webSocket = new MozWebSocket(url) ;
            } else {
                alert("此瀏覽器不支持websocket。。。") ;
            }
        }
    }
})
</script>
</head>
<body>
    <form action="message" method="post" class="form-group form-horizontal">
        <div id="contentDiv" style="width:600px;height:300px;overflow:scroll;">
        </div>
        <label class="col-md-1 control-label">消息:</label>
        <div class="col-md-3">
            <input type="text" id="message" name="message" class="form-control">        
        </div>
        <input type="button" id="but" class="btn btn-success" value="發送">
    </form>
</body>
</html>

如果要實現一對一,一對多聊,只需要將對話的session用靜態的map保存起來,用的時候取出來即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章