私はそのようなあいまいな質問をするのは嫌いですが、簡単な例を見つけるのに苦労しています。ここに私が持っているものがあります:
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();
}
}
}
私が見つけることができる埋め込みJettyの例では、サーバーインスタンスを実行するために常に次のようなものが表示されますが、WebSocketServletをインスタンス化する方法がわかりません。
Server server = new Server(8080);
server.start();
server.join();
WebSocket接続要求を処理できる組み込みサーバーを作成するにはどうすればよいですか?
更新:2013年12月2日
WebSocketを使用したEmbedded Jettyの最新の例については、以下を参照してください。
https://github.com/jetty-project/embedded-jetty-websocket-examples
元の回答
テストケースには例があります。
短い答え:
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();
これにより、1つのコンテキスト(ルートコンテキスト)を処理する単純なサーバーが作成されます。
http://localhost:8080/
WebSocketHandlerを別のコンテキストにバインドする場合は、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();
これにより、websocketがバインドされます
http://localhost:8080/echo/
サーブレットアプローチは次のとおりです。
1)この場合、このコードを使用する必要はありません(コンテナの責任です):
Server server = new Server(8080);
server.start();
server.join();
2)サーブレットのweb.xml記述子を作成します。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://Java.Sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>WebSocket application</display-name>
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.example.websocket.JettyWebSocketServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
さて、JSを書くとき:
var ws = new WebSocket("ws://localhost:8080/hello");
ws.send("text");
メッセージはMyEchoSocketのonTextメソッドで処理されます
サーブレットをより深く理解するためのチュートリアル tutorial
幸運を。