Create a gist now

Instantly share code, notes, and snippets.

How to use WebSocket of Tomcat
<!DOCTYPE html>
<meta charset=UTF-8>
<title>Tomcat WebSocket Chat</title>
var ws = new WebSocket("ws://localhost:8080/TomcatWebSocket/wschat/WsChatServlet");
ws.onopen = function(){
ws.onmessage = function(message){
document.getElementById("chatlog").textContent += + "\n";
function postToServer(){
document.getElementById("msg").value = "";
function closeConnect(){
<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>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns=""
//This sample is how to use websocket of Tomcat.
package wsapp;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.util.ArrayList;
import org.apache.catalina.websocket.MessageInbound;
import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WebSocketServlet;
import org.apache.catalina.websocket.WsOutbound;
public class WsChatServlet extends WebSocketServlet{
private static final long serialVersionUID = 1L;
private static ArrayList<MyMessageInbound> mmiList = new ArrayList<MyMessageInbound>();
public StreamInbound createWebSocketInbound(String protocol){
return new MyMessageInbound();
private class MyMessageInbound extends MessageInbound{
WsOutbound myoutbound;
public void onOpen(WsOutbound outbound){
try {
System.out.println("Open Client.");
this.myoutbound = outbound;
} catch (IOException e) {
public void onClose(int status){
System.out.println("Close Client.");
public void onTextMessage(CharBuffer cb) throws IOException{
System.out.println("Accept Message : "+ cb);
for(MyMessageInbound mmib: mmiList){
CharBuffer buffer = CharBuffer.wrap(cb);
public void onBinaryMessage(ByteBuffer bb) throws IOException{

Thanks! The code snippet was useful to me.


thank you very much !


Thanks for sharing this


i am getting some library files missing exceptions. can you send me war file for this project.


can you please provide the maven dependencies for this gist? Thanks.


Thanks Chitan. I was searching for an implementation of websocket and your example helped a lot. It worked perfect on different browsers on a computer. But i dont know way it did not work across different computers. i.e. messages from one computer is not being delivered to other computer.
Where is the problem?


Hi there, I was wondering if the mmiList should be protected against concurrent usage.


I'm using the tomcat version 7.0.39 and it does'nt work for me, it generate this exception :

GRAVE: "Servlet.service()" pour la servlet WsChatServlet a généré une exception
java.lang.ClassCastException: org.apache.coyote.Request cannot be cast to org.apache.coyote.http11.upgrade.UpgradeInbound


This code only works with Tomcat 7. Tomcat 8 the websocket classes appear to have been refactored.


@IslamBesto I'm using the tomcat version 7.0.34,And your mistakes as


I'm using Tomcat 7.0.52 version ... I cannot get the outbound part sending "Hello client" after connected, only when I turn off my tomcat, my client receives "Hello client" ... and I haven't make any changes ... why???
Btw, I changed the protocol to NIO on tomcat server.xml.


If you can use Tomcat 7.0.52, look at here.


If anybody need pom.xml example for this project-here it is. I've just done it and test






@AiRmode thanks!


WebSocket is working fine on tomcat 7 but i could fidn the same jars in tomcat 8 ,please help me out


I am getting exception below exception,while staring the server.(D:\novworkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\lexus-drivers-webapp\WEB-INF\lib\tomcat-servlet-api-7.0.27.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class


can i get all the material of wesocket?


Thank a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment