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:
codice:
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
e invia la richiesta di connessione al server
3) Ricezione della richiesta e dell'oggetto come segue:
codice:
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
accetta la richiesta e riserva la connessione
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
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);
}
Grazie in anticipo a chiunque si offra di aiutarmi :shy: