javaEE websocket

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

import javax.websocket.CloseReason;
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import javax.xml.ws.Endpoint;

@ServerEndpoint("/websocket") // @ServerEndpoint 在類級別上使用,它定義當前類作爲服務器端點.在此註解中使用的值表示將偵聽客戶端連接到服務器端點的URL.
public class WebSocketTest {
	private static final Set<Session> sessions = new HashSet<>();
	
	@OnMessage
    public void onMessage(String message, Session session) 
    	throws IOException, InterruptedException {
//		session.getId()
		
		// Print the client message for testing purposes
		System.out.println("Received: " + message);
		
/*		// Send the first message to the client
		session.getBasicRemote().sendText("This is the first server message");
		
		// Send 3 messages to the client every 5 seconds
		int sentMessages = 0;
		while(sentMessages < 3){
			Thread.sleep(5000);
			session.getBasicRemote().
				sendText("This is an intermediate server message. Count: " 
					+ sentMessages);
			sentMessages++;
		}
		
		// Send a final message to the client
		session.getBasicRemote().sendText("This is the last server message");*/
		
		for (Session s : sessions) {
			s.getBasicRemote().sendText(session.getId()+message);
		}
    }
	
	@OnOpen
    public void onOpen (Session session, EndpointConfig config) {
		sessions.add(session);
        System.out.println("Client connected"+sessions.size());
    }

    @OnClose
    public void onClose (Session session, CloseReason closeReason) {
    	sessions.remove(session);
    	System.out.println("Connection closed"+sessions.size());
    }
    
    @OnError
    public void onError(Session session, Throwable throwable) {
    }
    

}



var socket;
if (!window.WebSocket) {
    window.WebSocket = window.MozWebSocket;
}
// Javascript Websocket Client
if (window.WebSocket) {
    socket = new WebSocket("ws://127.0.0.1:8080/jtws010/websocket");
    socket.onmessage = function(event) {
        var ta = document.getElementById('responseText');
        ta.value = ta.value + '\n' + event.data
    };
    socket.onopen = function(event) {
        var ta = document.getElementById('responseText');
        ta.value = "Web Socket opened!";
    };
    socket.onclose = function(event) {
        var ta = document.getElementById('responseText');
        ta.value = ta.value + "Web Socket closed";
    };
} else {
    alert("Your browser does not support Web Socket.");
}
// Send Websocket data
function send(message) {
    if (!window.WebSocket) { return; }
    if (socket.readyState == WebSocket.OPEN) {
        socket.send(message);
    } else {
        alert("The socket is not open.");
    }
}


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