gpt4 book ai didi

java - 无法从 JavaScript 建立 WebSocket 连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:05 26 4
gpt4 key购买 nike

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

警报 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);
}
}

行家

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

为了发送消息,我在我的一个函数中使用了以下代码

     Notifications.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");
};

关于java - 无法从 JavaScript 建立 WebSocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23622842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com