Bonjour à tous,
Je me suis penché sur la communication avec WebSocket qui me semble géniale. Cependant, je n'arrive pas à communiquer avec mon serveur. J'ai fait un petit programme d'essai qui m'affiche un message à chaque état de connexion, côté client. Le problème, c'est que je n'arrive pas à contacter mon contrôleur qui est censé gérer tout ce qui est WebSocket. Voilà le code côté serveur…
Et le code côté client, rien d'exceptionnel.
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
50
51 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Net.WebSockets; using System.Web; using System.Web.WebSockets; using System.Web.Http; using System.Text; using System.Threading; using System.Threading.Tasks; namespace WebSocket.Controllers { public class WSChatController : ApiController { public HttpResponseMessage Get() { if (HttpContext.Current.IsWebSocketRequest) { HttpContext.Current.AcceptWebSocketRequest(ProcessWSChat); } return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols); } private async Task ProcessWSChat(AspNetWebSocketContext contexte) { System.Net.WebSockets.WebSocket socket = contexte.WebSocket; while (true) { ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]); WebSocketReceiveResult resultat = await socket.ReceiveAsync(buffer, CancellationToken.None); if (socket.State == WebSocketState.Open) { string messageUtilisateur = Encoding.UTF8.GetString(buffer.Array, 0, resultat.Count); messageUtilisateur = "Vous avez envoyé : " + messageUtilisateur + " à " + DateTime.Now.ToLongTimeString(); buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(messageUtilisateur)); await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None); } else { break; } } } } }
J'ai tenté de suivre ce tutoriel mais j'ai dû me tromper certainement quelque part…
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 <html> <head> <meta name="viewport" content="width=device-width" /> <title>Essai</title> </head> <script> var connexion = new WebSocket("ws://localhost/api/WSChat"); connexion.onopen = function () { alert("Connexion établie !!") } connexion.onclose = function () { alert("Connexion terminée"); } </script> </body> </html>
Est-ce qu'il y a moyen de simplement se connecter au serveur ? Le reste est simple (envoi de messages, etc.…) si j'ai compris…
Merci d'avance pour votre aide !
Partager