fleck 客户端_Fleck学习笔记

usingFleck;usingNewtonsoft.Json;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;namespaceWebSocketService.App_Start

{public classFleckHelper

{private static List allSockets = new List();private static Dictionary socketDic = new Dictionary();///

///WebSocket初始化///

public static voidWebSocketInit()

{var server = new WebSocketServer("ws://0.0.0.0:8181");//此处端口随意指定,但是不能被占用

server.Start(socket =>{

socket.OnOpen= () =>{//Console.WriteLine("Open!");//allSockets.Add(socket);//socketDic.Add(socket.ConnectionInfo.Id.ToString(), socket);//此处想要存储指定的key值,但是无法接收指定参数,仅供测试玩

var key = socket.ConnectionInfo.Path.Substring(1);if (!socketDic.Keys.Contains(key))

{

socketDic.Add(key, socket);//此处想要存储指定的key值,但是无法接收指定参数,仅供测试玩

}else{if (socketDic[key] != null)

{

socketDic[key].Close();

}

socketDic[key]=socket;

}

};

socket.OnClose= () =>{//Console.WriteLine("Close!");//allSockets.Remove(socket);//socketDic.Remove(socket.ConnectionInfo.Id.ToString());//此处想要删除指定的key值,但是无法接收指定参数,仅供测试玩

var key = socket.ConnectionInfo.Path.Substring(1);

socketDic.Remove(key);//此处想要删除指定的key值,但是无法接收指定参数,仅供测试玩

};

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

};

});

}///

///消息发送///

/// 自定义json字符串

public static void Send(stringmessage)

{try{var msgInfo = JsonConvert.DeserializeObject(message);var toUser =msgInfo.ToUser;var msg =msgInfo.Msg;if (!string.IsNullOrWhiteSpace(toUser))//已指定接收人

{if (socketDic.Keys.Contains(toUser))//确认是否有接收人的WebSocket

{

socketDic[toUser].Send(msg);//发送给指定接收人

}

}else{

socketDic.Values.ToList().ForEach(p=> p.Send(msg));//未指定接收人全部发送

}

}catch(Exception)

{throw;

}

}///

///自定义消息类///

public classMessageInfo

{///

///接收人///

public string ToUser { get; set; }///

///发送信息///

public string Msg { get; set; }

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值