winform调用websocket_c# 使用WebSocket来实现实时通讯

1.后台服务端,创建后台服务用来接收和向客户端推送信息,这里用到了Fleck组件,可以用“管理NUGET程序包”来下载并安装程序包

代码如下

static void Main(string[] args)

{

FleckLog.Level=LogLevel.Debug;var allSockets = new List();var server = new WebSocketServer("ws://0.0.0.0:7181");

server.Start(socket=>{

socket.OnOpen= () =>当建立Socket链接时执行此方法

{var data = socket.ConnectionInfo; //通过data可以获得这个链接传递过来的Cookie信息,用来区分各个链接和用户之间的关系(如果需要后台主动推送信息到某个客户的时候,可以使用Cookie)

Console.WriteLine("Open!");

allSockets.Add(socket);

};

socket.OnClose= () =>//当关闭Socket链接十执行此方法

{

Console.WriteLine("Close!");

allSockets.Remove(socket);

};

socket.OnMessage= message =>//接收客户端发送过来的信息

{

Console.WriteLine(message);

socket.Send("Echo:" +message);//allSockets.ToList().ForEach(s => s.Send("Echo: " + message));

};

});var input =Console.ReadLine();while (input != "exit")

{foreach (var socket inallSockets.ToList())

{

socket.Send(input);

}

input=Console.ReadLine();

}

}

客户端代码

$(document).ready(function () {

$.cookie('userID', '0000');

var wsImpl = window.WebSocket || window.MozWebSocket;

var data = $("#Data");

data.append ( "connecting to server ..
");

// 创建新的websocket新连接端口为7181

window.ws = new wsImpl('ws://localhost:7181');

// 当数据从服务器服务中心发送后,继续向下运行过程

ws.onmessage = function (evt) {

data.append (evt.data + '
');

};

// 当链接对象找到服务端成功对接后,提示正常打开

ws.onopen = function () {

data.append ( '.. connection open
');

};

// 当链接对象未找找到服务端成功对接后,提示打开失败,别切单项关闭

ws.onclose = function () {

data.append ( '.. connection closed
');

}

$("#Submit").click(function () {

var text = $("#Text").val();

ws.send(text);

$("#Text").val("");

})

})

输入内容

备注,如果需要关联每个Socket和用户,需要自己根据创建链接时候的在Cookie里面保存的User信息 再次建立Dictionary对应关系,这样可以根据这个对应关系,根据服务器需要主动到对应的Socket推送信息

你可能感兴趣的:(winform调用websocket_c# 使用WebSocket来实现实时通讯)