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.");
}
}