Kann nicht herstellen einer WebSocket-Verbindung in JavaScript
Soll die Anwendung die Tabelle aktualisiert, wenn ein Antrag gestellt wird. Ich habe den folgenden code, um Benachrichtigungen vom server. Wenn ich die Anwendung ausführen, zeigt es Folgendes im alert-Boxen, scheint es angeschlossen ist aber wenn ich auf "senden" Methode der Benachrichtigung der Klasse es tut sich auch nichts ändern.
Alarm 1)
windowfunction connect() {
wsocket = new WebSocket("ws://localhost:8080/Notifications");
alert("got connected");
document.getElementById("foo").innerHTML = "arraypv[0]";
wsocket.onmessage = onMessage;
}
Alert 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>
Code
@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>
Eine Nachricht zu senden, ich verwende folgenden code in einer meiner Funktionen
Notifications.send();
Konsole zeigt nur
SCHWERER: senden
Wenn ich trace die Verbindung mit FireBug zeigt es
Firefox can't establish a connection to the server at ws://localhost:8080/Notifications.
- Eins kann ich bestätigen, dass das Problem mit Ihrem JS-client und nicht der server. Ich habe html 5 hier also nicht testen Sie Ihre JS, aber ich habe einen java-basierten client und dem server funktioniert gut.
- Wie sind Sie mit dem öffnen der HTML-Datei? Es sollte gewartet werden, die durch einen webserver auf dem gleichen host wie Sie eine Verbindung herstellen möchten, um aus javascript-und nicht nur eröffnet, wie eine Datei von der DVD, oder anderes, führen Sie wahrscheinlich in den Sicherheitseinstellungen des browser.
- Bei mir läuft es auf meinem localhost. Dann, wie um es zu testen, bevor die server?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlenden Trailing Slash
Du hast vergessen die trailing slash:
Sie sollte die Verbindung
statt
(Beachten Sie den nachgestellten Schrägstrich das ist wirklich wichtig).
Außerdem gibt es ein paar mehr Probleme mit deinem code.
WebSocket ist - wie fast alles in javascript asynchroneous.
Zum Zeitpunkt, wo Sie Ihre
websocket ist nicht actaully verbunden.
Bitte fügen Sie einen Event-Handler, um es so