La création d'un “Hello World” WebSocket exemple

Je ne comprends pas pourquoi je ne peux pas faire le code suivant travail. Je veux me connecter avec JavaScript pour ma console du serveur d'application. Et puis envoyer les données au serveur.

Voici le code du serveur:

    static void Main(string[] args)
    {            
        TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 9998);
        server.Start();
        var client = server.AcceptTcpClient();
        var stream = client.GetStream();

        while (true)
        {
            var buffer = new byte[1024]; 
            //wait for data to be received
            var bytesRead = stream.Read(buffer, 0, buffer.Length);                
            var r = System.Text.Encoding.UTF8.GetString(buffer);
            //write received data to the console
            Console.WriteLine(r.Substring(0, bytesRead));
        }
    }

et voici le JavaScript:

        var ws = new WebSocket("ws://localhost:9998/service");
        ws.onopen = function () {
            ws.send("Hello World"); //I WANT TO SEND THIS MESSAGE TO THE SERVER!!!!!!!!
        };

        ws.onmessage = function (evt) {
            var received_msg = evt.data;
            alert("Message is received...");
        };
        ws.onclose = function () {
            //websocket is closed.
            alert("Connection is closed...");
        };

Lorsque j'exécute ce code c'est ce qui se passe:

La création d'un “Hello World” WebSocket exemple

Noter que lorsque j'exécute le code JavaScript, le serveur accepte et réussi à établir une connexion. Le JavaScript n'est pas en mesure d'envoyer des données à travers. Chaque fois que je place la méthode send il ne sera pas envoyé, même si une connexion est établie. Comment puis-je faire ce travail?

  • Cette "question" ne semble pas être une question plus longtemps, et donc n'est pas vraiment adapté à StackOverflow du format. FWIW, le message n'est pas chiffré, il est masqué (crypté) par XOR avec l'encontre d'une valeur aléatoire est transmis comme une partie de l'image. Ce protocole détail existe pour éviter l'empoisonnement des attaques contre des serveurs proxy qui pourrait ne pas comprendre le trafic.
  • merci, cette réponse est très utile 🙂 hey, juste une chose, est-ce "static private string guid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";" chose est toujours constant? si non, où puis-je obtenir ces valeurs?
  • j'ai obtenu ceci: "Un serveur ne doit pas masquer les images qu'il envoie au client"
  • Vous devriez probablement avoir quitté la question d'origine intact. Le but de ces questions est de présenter le problème, pas la solution. Les réponses, comme vous avez pu le deviner, sont pour les solutions.
  • Pourquoi le WebSocket url se termine par "/service " (ws://localhost:8080/service)? Pourquoi ne pas simplement 'ws://localhost:8080'?
  • J'ai eu le même message. Avez-vous résoudre ce problème?
  • vous pouvez également l'utiliser sans le "service". Testé par moi-même.
  • Aucun ne fonctionne pour moi avec IE ni avec FF
  • S'il vous plaît ne pas se métamorphoser questions en réponses - cette sorte de chose constitue un non-trivial de flux de travaux créés par des éditeurs bénévoles. Dès que vous avez des éléments de réponse à tout, le mettre dans une réponse, et de l'y maintenir. Merci.

InformationsquelleAutor Tono Nam | 2012-04-18