I hate asking such a vague question, but I'm having a hard time finding a simple example. Here's what I have so far:
public class JettyWebSocketServlet extends WebSocketServlet{ @Override public void configure(WebSocketServletFactory factory) { factory.register(MyEchoSocket.class); } } @WebSocket public class MyEchoSocket { @OnWebSocketMessage public void onText(WebSocketConnection conn, String message) { System.out.println("text: " + message); try { conn.write(null, new FutureCallback(), "got: " + message); } catch (Exception e) { e.printStackTrace(); } } }
The embedded Jetty examples I can find always show something like the following, to start a Server instance running, but I don't know how to instantiate my WebSocketServlet.
Server server = new Server(8080); server.start(); server.join();
How do I create an embedded server that can handle WebSocket connection requests?
Creating Web Socket connections is really simple. All you have to do is call the WebSocket constructor and pass in the URL of your server. // Create a new WebSocket. var socket = new WebSocket('ws://echo.websocket.org');
Update: Dec 2, 2013
For an up to date example of the Embedded Jetty with WebSocket see:
https://github.com/jetty-project/embedded-jetty-websocket-examples
Original Answer
There's an example found in the test cases.
http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/ExampleEchoServer.java
Short Answer:
Server server = new Server(8080); WebSocketHandler wsHandler = new WebSocketHandler() { @Override public void configure(WebSocketServletFactory factory) { factory.register(MyEchoSocket.class); } }; server.addHandler(wsHandler); server.start(); server.join();
This will create a simple server that handles 1 context, the root context.
http://localhost:8080/
If you want to bind the WebSocketHandler to another context, wrap it in a ContextHandler.
Server server = new Server(8080); WebSocketHandler wsHandler = new WebSocketHandler() { @Override public void configure(WebSocketServletFactory factory) { factory.register(MyEchoSocket.class); } }; ContextHandler context = new ContextHandler(); context.setContextPath("/echo"); context.setHandler(wsHandler); server.addHandler(context); server.start(); server.join();
This will bind your websocket to
http://localhost:8080/echo/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With