Je semble avoir des difficultés à obtenir une connexion «correcte» entre mon serveur Java et mon client JavaScript. Il semble se connecter correctement, le client envoie son en-tête d'accord, mais c'est aussi loin que possible. Les fonctions onopen
ou onmessage
ne sont jamais déclenchées du tout.Mon WebSocket ne fonctionne pas comme prévu; le serveur est implémenté en Java et le client est en JavaScript
Voici le code du serveur Java:
import java.net.*;
import java.io.*;
public class Server {
static DataOutputStream out;
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8112);
System.out.println("Server Started");
while(true) {
Socket socket = serverSocket.accept();
System.out.println("A client connected");
out = new DataOutputStream(socket.getOutputStream());
//Send a simple-as-can-be handshake encoded with UTF-8
String handshake = "HTTP/1.1 101 Web Socket Protocol Handshake\r" +
"Upgrade: WebSocket\r" +
"Connection: Upgrade\r" +
"WebSocket-Origin: http://localhost\r" +
"WebSocket-Location: ws://localhost:8112/\r" +
"WebSocket-Protocol: sample\r\n\r\n";
out.write(handshake.getBytes("UTF8"));
System.out.println("Handshake sent.");
//Send message 'HI!' encoded with UTF-8
String message = "HI!";
out.write(0x00);
out.write(message.getBytes("UTF8"));
out.write(0xff);
System.out.println("Message sent!");
//Cleanup
socket.close();
out.close();
System.out.println("Everything closed!");
}
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
Et voici le code pour le client:
<html>
<head>
<meta charset="UTF-8">
<script>
function load() {
var ssocket = new WebSocket("ws://localhost:8112/");
socket.onopen = function(e) { alert("opened"); }
socket.onclose = function(e) { alert("closed"); }
socket.onmessage = function(e) { alert(e.data); }
}
</script>
</head>
<body onload="load();">
</body>
</html>
Pourquoi pas onopen
ou onmessage
déclencheur? J'ai essayé beaucoup de choses différentes, je n'arrive pas à le faire.
Qu'est-ce que je fais mal?
Quel navigateur utilisez-vous? – SimonJ
Juste remarqué une faute de frappe dans votre extrait de JS ici. "ssocket" devrait être "socket". –