Bonjour a tous,

Je me présente a vous démunie, après des journées de test je ne sais plus quoi faire. Voici mon probleme :

Je cherche a faire un chat sur mon site internet (javascript), pour cela j'ai du programmé un serveur pour le chat (en python), les codes sont simples mais je ne comprend pas pourquoi les deux parties n'arrivent pas a communiqué, j'avais déjà réalisé pas mal d'applis avec des sockets mais tout avec deux API python...

En gros, le client arrive a se connecte au serveur, d'apres ce que j'ai lu ils doivent échangé un certains nombre d'infos (handshakes) mais c la que sa coince, quand le serveur renvoie la réponse au client, le client m'indique que je viens d'être déco, voici les codes (simpliste car c'est juste pour tester) :

HTML (client) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Web Socket Example</title>
    <meta charset="UTF-8">
    <script>
      window.onload = function() {
        var s = new WebSocket("ws://localhost:9999/");
        s.onclose = function(e) { alert("closed"); }
	s.onopen = function(e) { alert("opened"); }
        s.onmessage = function(e) { alert("got: " + e.data); }
      };
    </script>
  </head>
    <body>
      <div id="holder" style="width:600px; height:300px"></div>
    </body>
</html>
Python (serveur) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: cp1252 -*-
import threading
import socket
import sys
 
continuer = True   
 
class Membre(threading.Thread):
 
    def __init__(self, connexion):
        threading.Thread.__init__(self)
        self.connexion = connexion
 
    def run(self):
        data = self.connexion.recv(1024)
        print data
        handshake = "HTTP/1.1 101 Switching Protocols\nUpgrade: websocket\nConnection: Upgrade\nSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=\nSec-WebSocket-Protocol: chat"
        self.connexion.send(handshake.encode())
        print "debut"
        self.connexion.send("test");
        while 1:
            try:
                data = self.connexion.recv(1024)
                if not data: break
                print data
            except:
                break
        print "Deconnexion de ", self.connexion
 
# Debut du programme
 
def main():
    # Declaration du socket principal
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try: sock.bind(("127.0.0.1",9999))
    except: return False
 
    sock.listen(5)
 
    while continuer:
        connexion, detail = sock.accept()
        print "Connexion de ", connexion
        Membre(connexion).start()
 
# Corps du programme
 
if not main():
    print "Impossible de lancer le serveur..."
    raw_input()
Comme vous avez pu le voir, j'ai mis des print, donc en gros, voila ce que j'obtient :

Connexion de ...
Le data (handshake du client)
Debut (donc mon handshake a ete envoye)

Cote client j'ai directement l'alert closed qui dit que la connexion a été stoppé.

Si vous avez besoin de quoi que se soit, n'hésitez pas, je vous remercie d'avance a tous de m'aiguiller...

Cordialement