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) :
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 <!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>
Comme vous avez pu le voir, j'ai mis des print, donc en gros, voila ce que j'obtient :
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()
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
Partager