Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.