2014-08-30 2 views
0

Я пишу C# Tcp Server и клиент HTML5 Websocket. Но при отправке сообщения с клиента на сервер, я получаю сообщение «GET/HTTP/1.1» на C# Tcp Server.C# Сервер Tcp - связь HTML5 Websocket

C# Сервер

using System;using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 

namespace websocket 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.2"), 500); 
      server.Start(); 
      Console.WriteLine("Basladi"); 
      Console.WriteLine("Bekliyor"); 
      while (true) 
      { 
       TcpClient client = server.AcceptTcpClient(); 
       Console.WriteLine("Baglandi"); 
       NetworkStream asd = client.GetStream(); 
       byte[] buffer = new byte[1024]; 
       String mesaj = Encoding.ASCII.GetString(buffer, 0, asd.Read(buffer, 0, buffer.Length)); 
       Console.WriteLine(mesaj); 
      } 
      server.Stop(); 
     } 
    } 
} 

HTML5 WebSocket Client

function WebSocketTest() 
{ 
    var ws = new WebSocket("ws://127.0.0.2:500"); 
    ws.onopen = function() 
    { 
     ws.send("Message to send"); 
     document.write("Message is sent..."); 
    }; 
    ws.onmessage = function (evt) 
    { 
     var received_msg = evt.data; 
     document.write("Message is received..."); 
    }; 
    ws.onclose = function() 
    { 
     document.write("Connection is closed..."); 
    }; 
} 

Результат

GET/HTTP/1.1 
Upgrade: websocket 
Connection: Upgrade 
Host: 127.0.0.2:500 
Origin: null 
Pragma: no-cache 
Cache-Control: no-cache 
Sec-WebSocket-Key: Nmh4m9EiHa9GFx8Ft5Z9bQ== 
Sec-WebSocket-Version: 13 
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 
+0

Вы можете использовать http://alchemywebsockets.net/ –

+0

Спасибо. Но я не хочу использовать плагин. – ibrahimsn

+0

Тогда вы должны реализовать протокол самостоятельно. Например, http://stackoverflow.com/questions/13517712/websocket-server-client-cant-handshake –

ответ

0

WebSockets не ясно, TCP, но сокет-подобный слой внутри HTTP-соединения. Здесь вы видите HTTP-запрос клиента с запросом на обновление HTTP-соединения с соединением WebSocket. Если вы не хотите использовать существующие библиотеки WebSocket, вам необходимо самостоятельно реализовать протокол, который сначала реализует минимальный веб-сервер (RFC2616), а затем устанавливает верхний слой WebSocket (RFC6455).

Смежные вопросы