<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset=UTF-8> | |
<title>Tomcat WebSocket Chat</title> | |
<script> | |
var ws = new WebSocket("ws://localhost:8080/TomcatWebSocket/wschat/WsChatServlet"); | |
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> |
<?xml version="1.0" encoding="UTF-8"?> | |
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> | |
<servlet> | |
<servlet-name>WsChatServlet</servlet-name> | |
<servlet-class>wsapp.WsChatServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>WsChatServlet</servlet-name> | |
<url-pattern>/wschat/WsChatServlet</url-pattern> | |
</servlet-mapping> | |
</web-app> |
//This sample is how to use websocket of Tomcat. | |
package wsapp; | |
import java.io.IOException; | |
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; | |
@Override | |
public void onOpen(WsOutbound outbound){ | |
try { | |
System.out.println("Open Client."); | |
this.myoutbound = outbound; | |
mmiList.add(this); | |
outbound.writeTextMessage(CharBuffer.wrap("Hello!")); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Override | |
public void onClose(int status){ | |
System.out.println("Close Client."); | |
mmiList.remove(this); | |
} | |
@Override | |
public void onTextMessage(CharBuffer cb) throws IOException{ | |
System.out.println("Accept Message : "+ cb); | |
for(MyMessageInbound mmib: mmiList){ | |
CharBuffer buffer = CharBuffer.wrap(cb); | |
mmib.myoutbound.writeTextMessage(buffer); | |
mmib.myoutbound.flush(); | |
} | |
} | |
@Override | |
public void onBinaryMessage(ByteBuffer bb) throws IOException{ | |
} | |
} | |
} |
This comment has been minimized.
This comment has been minimized.
thank you very much ! |
This comment has been minimized.
This comment has been minimized.
Thanks for sharing this |
This comment has been minimized.
This comment has been minimized.
i am getting some library files missing exceptions. can you send me war file for this project. |
This comment has been minimized.
This comment has been minimized.
can you please provide the maven dependencies for this gist? Thanks. |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
Hi there, I was wondering if the mmiList should be protected against concurrent usage. |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
This code only works with Tomcat 7. Tomcat 8 the websocket classes appear to have been refactored. |
This comment has been minimized.
This comment has been minimized.
@IslamBesto I'm using the tomcat version 7.0.34,And your mistakes as |
This comment has been minimized.
This comment has been minimized.
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??? |
This comment has been minimized.
This comment has been minimized.
If you can use Tomcat 7.0.52, look at here. |
This comment has been minimized.
This comment has been minimized.
If anybody need pom.xml example for this project-here it is. I've just done it and test
|
This comment has been minimized.
This comment has been minimized.
@AiRmode thanks! |
This comment has been minimized.
This comment has been minimized.
WebSocket is working fine on tomcat 7 but i could fidn the same jars in tomcat 8 ,please help me out |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
can i get all the material of wesocket? |
This comment has been minimized.
This comment has been minimized.
Thank a lot! |
This comment has been minimized.
This comment has been minimized.
Where did you get the package "org.apache.catalina.websocket" from? |
This comment has been minimized.
This comment has been minimized.
@pavelantushevich |
This comment has been minimized.
This comment has been minimized.
Thank a lot! good |
This comment has been minimized.
This comment has been minimized.
Thanks! |
This comment has been minimized.
This comment has been minimized.
This is a great code thank you. Going to run it on my site. |
This comment has been minimized.
This comment has been minimized.
Doesn't work with Tomcat 9 |
This comment has been minimized.
This comment has been minimized.
Can want java code for client side not the javascript code can anyone provide me plz.TQ |
This comment has been minimized.
Thanks! The code snippet was useful to me.