I deployed the Servlet on Tomcat 7.0.67.
`public class Test extends JettySocketIOServlet
{
private static final String ANNOUNCEMENT = "announcement"; // server to all connected clients
private static final String CHAT_MESSAGE = "chat message"; // broadcast to room
private static final String WELCOME = "welcome"; // single event sent by server to specific client
private static final String FORCE_DISCONNECT = "force disconnect"; // client requests server to disconnect
private static final String SERVER_BINARY = "server binary"; // client requests server to send a binary
private static final String CLIENT_BINARY = "client binary"; // client sends binary
private static final long serialVersionUID = 1L;
@Override
@SuppressWarnings("unchecked")
public void init(ServletConfig config) throws ServletException
{
// JdkOverLog4j.install();
System.out.println("Init............");
super.init(config);
of("/chat").on(new ConnectionListener()
{
@Override
public void onConnect(final Socket socket)
{
try
{
socket.emit(WELCOME, "Welcome to Socket.IO Chat, " + socket.getRequest().getRemoteAddr() + "!");
socket.join("room");
}
catch (SocketIOException e)
{
e.printStackTrace();
socket.disconnect(true);
}
socket.on(new DisconnectListener() {
@Override
public void onDisconnect(Socket socket, DisconnectReason reason, String errorMessage)
{
of("/chat").emit(ANNOUNCEMENT, socket.getSession().getSessionId() + " disconnected");
}
});
socket.on(CHAT_MESSAGE, new EventListener()
{
@Override
public Object onEvent(String name, Object[] args, boolean ackRequested)
{
System.out.println("Received chat message: " + args[0]);
try
{
socket.broadcast("room", CHAT_MESSAGE, socket.getId(), args[0]);
}
catch (SocketIOException e)
{
e.printStackTrace();
}
return "OK"; //this object will be sent back to the client in ACK packet
}
});
socket.on(FORCE_DISCONNECT, new EventListener()
{
@Override
public Object onEvent(String name, Object[] args, boolean ackRequested)
{
socket.disconnect(false);
return null;
}
});
socket.on(CLIENT_BINARY, new EventListener()
{
@Override
public Object onEvent(String name, Object[] args, boolean ackRequested)
{
Map map = (Map<Object, Object>)args[0];
InputStream is = (InputStream) map.get("buffer");
ByteArrayOutputStream os = new ByteArrayOutputStream();
try
{
ByteStreams.copy(is, os);
byte []array = os.toByteArray();
String s = "[";
for (byte b : array)
s += " " + b;
s += " ]";
System.out.println("Binary received: " + s);
}
catch (IOException e)
{
e.printStackTrace();
}
return "OK";
}
});
socket.on(SERVER_BINARY, new EventListener()
{
@Override
public Object onEvent(String name, Object[] args, boolean ackRequested)
{
try
{
socket.emit(SERVER_BINARY,
new ByteArrayInputStream(new byte[] {1, 2, 3, 4}),
new ACKListener()
{
@Override
public void onACK(Object[] args)
{
System.out.println("ACK received: " + args[0]);
}
});
}
catch (SocketIOException e)
{
socket.disconnect(true);
}
return null;
}
});
}
});
}
}`
Here is my web.xml:
`
<servlet-name>Test</servlet-name>
<servlet-class>test.Test</servlet-class>
<servlet-name>Test</servlet-name>
<url-pattern>/socket.io/*</url-pattern>
`
When I start up the Tomcat :
javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable
at org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.onStartup(WebSocketServerContainerInitializer.java:146)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5580)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
....I hava no idea why , Anyone knows?
I deployed the Servlet on Tomcat 7.0.67.
`public class Test extends JettySocketIOServlet
{
private static final String ANNOUNCEMENT = "announcement"; // server to all connected clients
private static final String CHAT_MESSAGE = "chat message"; // broadcast to room
private static final String WELCOME = "welcome"; // single event sent by server to specific client
private static final String FORCE_DISCONNECT = "force disconnect"; // client requests server to disconnect
private static final String SERVER_BINARY = "server binary"; // client requests server to send a binary
private static final String CLIENT_BINARY = "client binary"; // client sends binary
private static final long serialVersionUID = 1L;
}`
Here is my web.xml:
`
`
When I start up the Tomcat :
....I hava no idea why , Anyone knows?