Skip to content

Instantly share code, notes, and snippets.

@milovtim
Forked from chitan/WsChat.html
Last active August 29, 2015 14:10
Show Gist options
  • Save milovtim/bfbd32c68e4416953506 to your computer and use it in GitHub Desktop.
Save milovtim/bfbd32c68e4416953506 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tomcat WebSocket Chat</title>
<script>
var ws = new WebSocket("ws://localhost:8080/WsChat/wschat");
ws.onopen = function(){
};
ws.onmessage = function(message){
document.getElementById("chatlog").textContent += message.data + "\n";
};
function postToServer(){
ws.send(document.getElementById("msg").value);
document.getElementById("msg").value = "";
}
function closeConnect(){
ws.close();
}
</script>
</head>
<body>
<textarea id="chatlog" readonly></textarea><br/>
<input id="msg" type="text" />
<button type="submit" id="sendButton" onClick="postToServer()">Send!</button>
<button type="submit" id="sendButton" onClick="closeConnect()">End</button>
</body>
</html>
//This sample is how to use websocket of Tomcat7.0.52.
//web.xml is not required. Because you can use Servlet3.0 Annotation.
package wsapp;
import java.io.IOException;
import java.util.ArrayList;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/wschat")
public class WsChat{
//notice:not thread-safe
private static ArrayList<Session> sessionList = new ArrayList<Session>();
@OnOpen
public void onOpen(Session session){
try{
sessionList.add(session);
//asynchronous communication
session.getBasicRemote().sendText("Hello!");
}catch(IOException e){}
}
@OnClose
public void onClose(Session session){
sessionList.remove(session);
}
@OnMessage
public void onMessage(String msg){
try{
for(Session session : sessionList){
//asynchronous communication
session.getBasicRemote().sendText(msg);
}
}catch(IOException e){}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment