【发布时间】:2014-10-24 09:52:38
【问题描述】:
我正在编写 C# Tcp 服务器和 HTML5 Websocket 客户端。但是当从客户端向服务器发送消息时,我在 C# Tcp 服务器上收到“GET/HTTP/1.1”消息。
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 客户端
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
【问题讨论】:
-
谢谢。但我不想使用插件。
-
那你就得自己实现协议了。例如,stackoverflow.com/questions/13517712/…
-
如果你使用 SignalR signalr.net,所有细节都被抽象出来,即使客户端不支持 websockets 也能正常工作。
标签: c# javascript html tcp