用js写一个webSocket客户端。在用C#写一个WebScoket服务端两个可以握手成功。互相发送信息
Websocket客户端的JS代码:
var socket = new WebSocket("ws://localhost:8080");
socket.onopen = function() {
console.log("连接已建立...");
};
socket.onerror = function(error) {
console.log("连接错误:" + error);
};
socket.onmessage = function(event) {
console.log("收到消息:" + event.data);
};
function sendMessage() {
var message = document.getElementById("messageInput").value;
socket.send(message);
}
Websocket服务端的C#代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace WebSocketServer
{
class Program
{
static void Main(string[] args)
{
StartServer();
}
private static void StartServer()
{
byte[] buffer = new byte[1024];
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8080));
serverSocket.Listen(10);
Console.WriteLine("服务器启动成功,等待客户端连接...");
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("客户端已连接...");
while (true)
{
int length = clientSocket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine("收到消息:" + message);
string replyMessage = "服务器已收到消息:" + message;
clientSocket.Send(Encoding.UTF8.GetBytes(replyMessage));
}
}
}
}
需要注意的是,Websocket协议的握手过程并不是普通的TCP连接建立过程,需要按照协议规定进行握手。在实现Websocket服务端时,需要对握手过程进行处理。
原文地址: https://www.cveoy.top/t/topic/Ys2 著作权归作者所有。请勿转载和采集!