当前位置: 首页 > news >正文

湖南网站建设 要上磐石网络大型销售网站建设

湖南网站建设 要上磐石网络,大型销售网站建设,铜陵专业网站制作公司,高质量的赣州网站建设websocket-sharp 是一个websocket的C#实现#xff0c;支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象#xff0c;他包含了OnOpen,OnMessage…websocket-sharp 是一个websocket的C#实现支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象他包含了OnOpen,OnMessageOnClose,OnError四个事件回调以及一个Sessions对象和一个Send方法。熟悉websocket的都知道前四个事件回调函数是用来处理客户端链接、发送消息、链接关闭以及出错。sessions则是用来管理所有的会话连接。每产生一个连接都会有一个新Idsessions中会新增一个IWebSocketSession对象。当页面关闭或者刷新都会触发OnClose继而sessions中会移除对应的IwebSocketSession对象。 WebSocketSessionManager 有一个广播方法Sessions.Broadcast通知所有连接的客户端。而WebSocketBehavior中的Send相当于是单发只能将消息发送到此刻连接的一个客户端。摸清了以上这些我们就可以做一个简单的IM了。 Websoket.Server 新建一个C#控制台程序。现在Nugget中添加websocket-sharp.以及JSON。 然后新增一个Chat类继承WebSocketBehaviorChat相当于是一个websocket的服务你可以创建多个websocketBehavior的实例然后在挂载在websocketServer上。 public class Chat : WebSocketBehavior{private Dictionarystring,string nameListnew Dictionarystring, string();protected override async Task OnMessage(MessageEventArgs e){StreamReader reader new StreamReader(e.Data);string text reader.ReadToEnd();try{var obj Json.JsonParser.DeserializeJsonDto(text);Console.WriteLine(收到消息 obj.content 类型 obj.type id: Id);switch (obj.type){//正常聊天case 1:obj.name nameList[Id];await Sessions.Broadcast(Json.JsonParser.Serialize(obj));break;//修改名称case 2:Console.WriteLine({0}修改名称{1},nameList[Id],obj.content);Broadcast(string.Format({0}修改名称{1}, nameList[Id], obj.content),3);nameList[Id] obj.content;break;default:await Sessions.Broadcast(text);break;}}catch (Exception exception){Console.WriteLine(exception);}//await Send(text);}protected override async Task OnClose(CloseEventArgs e){Console.WriteLine(连接关闭 Id);Broadcast(string.Format({0}下线共有{1}人在线, nameList[Id], Sessions.Count), 3);nameList.Remove(Id);}protected override async Task OnError(WebSocketSharp.ErrorEventArgs e) {var el e;}protected override async Task OnOpen(){Console.WriteLine(建立连接Id);nameList.Add(Id,游客Sessions.Count);Broadcast(string.Format({0}上线了共有{1}人在线, nameList[Id],Sessions.Count), 3);}private void Broadcast(string msg, string type 1){var data new JsonDto(){content msg,type type,name nameList[Id]};Sessions.Broadcast(Json.JsonParser.Serialize(data));}} JsonDto class JsonDto{public string content { get; set; }public string type { get; set; }public string name { get; set; }} 这里用nameList来管理所有的链接Id和用户名称的对应关系新上线的人都默认为游客。然后再OnMessage中定义了三种消息类型。1表示正常聊天2表示修改名称。3表示系统通知。用来让前端做一些界面上的区分。 然后在Program中启动WebSocketServer。下面指定了8080端口。 public class Program{public static void Main(string[] args){var wssv new WebSocketServer(null,8080);wssv.AddWebSocketServiceChat(/Chat);wssv.Start();Console.ReadKey(true);wssv.Stop();}} Client html: div idmessages/divinput typetext idcontent value/button idsendbt发送/buttondiv昵称input typetext idnickName / button idchangebt修改/button /div js: function initWS() {ws new WebSocket(ws://127.0.0.1:8080/Chat);ws.onopen function (e) {console.log(Openened connection to websocket);console.log(e);};ws.onclose function () {console.log(Close connection to websocket);// 断线重连initWS();}ws.onmessage function (e) {console.log(收到,e.data)var div$(div);var dataJSON.parse(e.data);switch(data.type){case 1:div.html(data.name:data.content);break;case 2:div.addClass(gray);div.html(修改名称data.content)break;case 3:div.addClass(gray);div.html(data.content)break;}$(#messages).append(div);}}initWS();function sendMsg(msg,type){ws.send(JSON.stringify({content:msg,type:type}));}$(#sendbt).click(function(){var text$(#content).val();sendMsg(text,1)$(#content).val();})$(#changebt).click(function(){var text$(#nickName).val();sendMsg(text,2)}) 运行效果 是不是很方便~~喜欢就赞一个。 源码https://files.cnblogs.com/files/stoneniqiu/websocket-sharp.zip websocket-sharphttp://sta.github.io/websocket-sharp/ nodejs 实现websocket服务端http://www.cnblogs.com/stoneniqiu/p/5402311.html
http://www.yutouwan.com/news/494409/

相关文章:

  • 蚌埠做企业网站网站设计和网站建设
  • 免费做印章的网站怎么用手机制作网站
  • 郑州专业做网站多少钱网站建设.c
  • 怎么免费做带音乐的网站阿里云可以建设多个网站
  • 确定网站设计公司简报丽水网站开发公司
  • 帝国网站做地域标签网站支付宝怎么做的
  • 做外围网站犯法吗四川网站建设一站式服务商
  • 网站 301中山今科网站建设
  • 遵化手机网站设计可以看那种东西的浏览器
  • 查楼盘剩余房源的网站网站服务器备案查询网站
  • 网站空间域名能不能自己续费网页设计模板大全
  • wordpress建站免费教程拖拽建站平台
  • 建设部网站官网办事厅网站开发基本流程ppt
  • 国外创意摄影网站创造网址
  • 建设外贸网站价格广东省网站备案系统
  • 网站必须做百度推广才能被别人搜到吗罗永浩做的网站
  • 泰兴网站建设邯郸市中小学健康管理平台登录
  • 公司做网站的原因好看的论坛网站模板
  • 安装iis8 添加网站wordpress文章摘要显示
  • 做犯法任务的网站查询网站服务器
  • 广州学建设网站网站名词
  • 微网站如何做微信支付宝支付宝电子商务网站建设与管理教案
  • php网站开发多线程开发国家工商企业查询系统
  • 网站文章内容排版要求easyui网站开发实战电子书
  • 海安网站设计湖南长沙解封通知最新
  • 广州番禺哪个公司建网站比较好衡水做网站建设
  • 山东房和城乡建设厅网站首页安徽网新科技网站建设介绍
  • pageadmin自助建站网站动态和静态
  • 网站的规划和建设新乡做网站多少钱
  • 网站备案快吗公众号会员卡管理系统