簡體   English   中英

Jetty WebSocket

[英]Jetty WebSocket

我對jetty 8.1.10.v20130312和WebSocket有疑問。 這是代碼:

web.xml中

<listener>
    <listener-class>ru.websocket.StartupListener</listener-class>
</listener>

StartupListener.java

public class StartupListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent arg0) {

}

public void contextInitialized(ServletContextEvent arg0) {
    Server server = new Server(8081);
    EventHandler handler = new EventHandler();
    server.setHandler(handler);
    try {
        server.start();
        System.out.println("Server started");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

EventHandler.java

public class EventHandler extends WebSocketHandler {

public WebSocket doWebSocketConnect(HttpServletRequest arg0, String arg1) {
     return new EventWebSocket();
}

}

EventWebSocket.java

public class EventWebSocket implements WebSocket {

public void onClose(int arg0, String arg1) {
    System.out.println("closed");
}

public void onOpen(Connection arg0) {
    System.out.println("opened");
}

}

當我想從JavaScript連接時,我有一個錯誤消息

2013-07-15 18:02:02.433:WARN:oejs.AbstractHttpConnection:/
java.lang.NullPointerException
        at org.eclipse.jetty.websocket.WebSocketFactory.upgrade(WebSocketFactory.java:238)
        at org.eclipse.jetty.websocket.WebSocketFactory.acceptWebSocket(WebSocketFactory.java:396)
        at org.eclipse.jetty.websocket.WebSocketHandler.handle(WebSocketHandler.java:43)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:368)
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
        at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:662)

關於build,我使用maven,java版本1.6.31,jetty版本8.1.10.v20130312。 重要我想在端口8080(StartupListener)上從Jetty啟動端口8081的新Jetty服務器。

謝謝你的回答。

org.eclipse.jetty.websocket.WebSocketFactory.upgrade(WebSocketFactory.java:238)java.lang.NullPointerException意味着你......

  • 嘗試使用非Jetty服務器(如Tomcat)中的Jetty WebSocket代碼。
  • 或者您嘗試從非HTTP連接(例如SPDY)升級。

這是因為在WebSocket握手的升級過程中無法找到核心HTTP連接,這是Jetty WebSocket服務器代碼運行的要求。

您是否使用RunjettyRun eclipse插件來運行您的Web應用程序?

如果是,請檢查“運行配置”,

將“選擇Jetty版本”下拉列表框設置為Jetty 8,例如“Jetty 8.1.2.v20120308”

您只能在Jetty 8或更高版本上運行websocket Web應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM