Ciao a tutti :ciauz:
è la prima volta che scrivo su questo forum, anche se lo conosco e mi è stato utile molte volte ;)
tuttavia questa volta mi trovo in difficoltà e non riesco a venirne fuori.. Spero mi possiate aiutare, almeno indirizzandomi sulla strada da seguire.
Voglio realizzare una comunicazione tramite WebSocket tra un client (scritto in html5+javascript) e un server (realizzato in VB.NET), se pur la prova di comunicazione tra client e server (entrambi) in vb.net aveva avuto un esito positivo, passando alla prova di comunicazione come indicato mi trovo sempre lo stesso errore e non riesco a capirne la causa.
PS. ho postato in questa sezione in quanto ritengo d'avere un problema proprio da lato JavaScript, spero di aver fatto la scelta giusta..
-SPECIFICA DI FUNZIONAMENTO
Server restituisce al client tutto quello che glli arriva preceduto dal simbolo "-"
-SITUAZIONE
attualmente ciò che avviene è:
1) Avvio di applicazione server che avvia server-socket e resta in attesa sull'ip desiderato alla porta 443 (inizialmente avevo usato e abilitato la 8080, poi la 80 e infine la 443 dopo aver anche effettuato la prova con una connessione wss piuttosto che ws)
2) Avvio lato client della pagina html5 la quale, una volta caricata, genera il seguente oggetto WebSocket:
e invia la richiesta di connessione al servercodice:URL: "ws://X.X.X.X:443/" binaryType: "blob" bufferedAmount: 0 extensions: "" onclose: function (event) { onClose(event); } onerror: function (event) { onError(event); } onmessage: function (msg) { onMessage(msg); } onopen: function (event) { onOpen(event); } protocol: "" readyState: 3 url: "ws://X.X.X.X:443/" __proto__: WebSocket
3) Ricezione della richiesta e dell'oggetto come segue:
accetta la richiesta e riserva la connessionecodice:GET / HTTP/1.1 Host: X.X.X.X:443 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Origin: http://X.X.X.X Sec-WebSocket-Version: 13 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: ASP.NET_SessionId=pyhzhnrdkqckmbgxo1w3i454 Sec-WebSocket-Key: U/G+BruB/bWCph2HLWHLUQ== Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
4) Segnalazione errore da parte del client:
WebSocket connection to 'ws://X.X.X.X:443/' failed: Error during WebSocket handshake: Invalid status line
5) oggetto lato client si porta in "readyStatus = 3 = CLOSED"
-CODICI
I codici sono molto semplici in quanto dovevano servirmi solo per effettuare il test di connessione e poi volevo trovarne un utilizzo più "serio"
>Codice Server - VB.NET
codice:Imports System.Net Imports System.Net.Sockets Imports System.Text.UTF8Encoding Public Class Server Dim server As TcpListener Dim client As TcpClient Dim NetStream As NetworkStream Dim ipaddr As String = "X.X.X.X" Dim ipaddress As IPAddress = ipaddress.Parse(ipaddr) Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load server = New TcpListener(ipaddress, 443) server.Start() OutPut.Text = "Server avviato... In attesa che quelcuno si connetta!" tmrConnessioni.Start() End Sub Private Sub tmrConnessioni_Tick(sender As System.Object, e As System.EventArgs) Handles tmrConnessioni.Tick If server.Pending Then client = server.AcceptTcpClient NetStream = client.GetStream OutPut.Text = "Si è connesso un utente!" tmrConnessioni.Stop() tmrDati.Start() End If End Sub Private Sub tmrDati_Tick(sender As System.Object, e As System.EventArgs) Handles tmrDati.Tick If client.Available > 0 Then Dim b(client.Available - 1) As Byte NetStream.Read(b, 0, b.Length) Dim stringa As String = UTF8.GetString(b) OutPut.Text += vbCrLf & stringa btnSend_Click("-" & stringa) End If If True Then End If End Sub Private Sub btnSend_Click(txt As String) Dim t() As Byte = UTF8.GetBytes(txt) NetStream.Write(t, 0, t.Length) End Sub End Class
>Codice Client - JavaScript
Grazie in anticipo a chiunque si offra di aiutarmi :shy:codice:var serverUrl = "ws://X.X.X.X:443/"; //use wss: for secure websockets var output; var websocket; function initialize() { websocket = new WebSocket(serverUrl); websocket.onopen = function(event) { onOpen(event); }; websocket.onclose = function(event) { onClose(event); }; websocket.onmessage = function(msg) { onMessage(msg); }; websocket.onerror = function(event) { onError(event); }; console.log(websocket); } function sendTextMessage(e) { console.log(websocket.readyState); if (websocket.readyState != WebSocket.OPEN){ return; } websocket.send(e); } function onOpen(event) { console.log("Successfully connected to: " + serverUrl); websocket.send("ciaoooooo mondo"); } function onClose(event) { console.log("Disconnected"); console.log(event); } function onMessage(msg) { console.log("onMessage"); try { var json = JSON.parse(msg.data); } catch (e) { console.log('This doesn\'t look like a valid JSON: ', msg.data); return; } } function onError(event) { console.log('Error:'); console.log(event); } function sendMessage(message) { console.log("sending message: " + message); websocket.send(message); } function writeLog(message) { console.log(message); }

Rispondi quotando