无法从JavaScript建立WebSocket连接



应用程序应该在发出请求时更新表。我有以下代码来接收来自服务器的通知。当我运行应用程序时,它在警告框中显示以下内容,似乎是连接的,但当我调用通知类的'send'方法时,它不会改变任何东西。

警报1)

       windowfunction connect() {
            wsocket = new WebSocket("ws://localhost:8080/Notifications");
            alert("got connected");
            document.getElementById("foo").innerHTML = "arraypv[0]";
            wsocket.onmessage = onMessage;
        }

警报2)

      got connected 
JavaScript

 <script type="text/javascript">
            var wsocket;
            function connect() {
                wsocket = new WebSocket("ws://localhost:8080/Notifications");
                alert("got connected");
                wsocket.onmessage = onMessage;
            }
            function onMessage(evt) {
                alert(evt);
                var arraypv = evt;
                alert("array" + arraypv);
                document.getElementById("foo").innerHTML = arraypv[0];
            }
            alert("window" + connect);
            window.addEventListener("load", connect, false);
        </script>

@ServerEndpoint("/Notifications")
public class Notifications {
   /* Queue for all open WebSocket sessions */
   static Queue<Session> queue = new ConcurrentLinkedQueue();

   public static void send() {
       System.err.println("send");
       String msg = "Here is the message";
      try {
         /* Send updates to all open WebSocket sessions */
         for (Session session : queue) {
            session.getBasicRemote().sendText(msg);
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
    }
   @OnOpen
    public void openConnection(Session session) {
        System.err.println("in open connection");
        queue.add(session);
    }
    @OnClose
    public void closedConnection(Session session) {
        System.err.println("in closed connection");
        queue.remove(session);
    }
    @OnError
    public void error(Session session, Throwable t) {
        System.err.println("in error");
        queue.remove(session);
    }
}
Maven

 <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.0-b08</version>
        </dependency>

在我的函数

中使用以下代码发送消息
     Notifications.send();

控制台只显示

SEVERE: send

当我使用FireBug跟踪连接时,它显示

Firefox can't establish a connection to the server at ws://localhost:8080/Notifications.

缺少尾斜杠

你忘记了后面的斜杠:你应该连接到

ws://localhost:8080/Notifications/ 

代替

ws://localhost:8080/Notifications

(注意后面的斜杠,这非常重要)。

同时,你的代码还有一些问题。WebSocket就像javascript中的几乎所有东西一样是异步的。在你做你的

的时候
alert("got connected");

websocket没有实际连接。请像这样附加一个事件处理程序

wsocket.onopen = function() {
    alert("got connected");
};

相关内容

  • 没有找到相关文章

最新更新