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

网站开发网页设计北京师范大学出版社网站建设书籍在线阅读

网站开发网页设计北京师范大学出版社,网站建设书籍在线阅读,南昌装修网站建设,女人动漫做受网站一、概述 本节主要讲解在SMB中如何进行websocket快速开发#xff0c;实现客户端连接、关闭、消息通讯等功能。 示例下载#xff1a;https://download.csdn.net/download/lllllllllluoyi/88949743 二、创建WebSocket服务器 1、在csdnProject工程中新建一个消息流。 添加W…一、概述 本节主要讲解在SMB中如何进行websocket快速开发实现客户端连接、关闭、消息通讯等功能。 示例下载https://download.csdn.net/download/lllllllllluoyi/88949743 二、创建WebSocket服务器 1、在csdnProject工程中新建一个消息流。 添加WebSocket Server和四个Java计算节点组件具体流程如图 2、各组件说明 WebSocket1websocket服务器组件端口设置8100 route主要作用是路由。因为WebSocket1会产生open、close、onMessage动作需要在这里进行逻辑分流具体代码是 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*;public class csdn_websocketServer_route {private String routeLabels ;public String execute(MessageModel messageModel,String message){String eventName messageModel.eventName;switch(eventName){case open:routeLabels openWebSocket;break;case close:routeLabels closeWebSocket;break;default:routeLabels processWebSocket;break;}return message;}public String getRouteLabels(){return routeLabels;}}openWebSocket客户端连接服务器的处理逻辑。 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*; import sashulin.websocket.SashulinWebSocket; public class csdn_websocketServer_openWebSocket {private String routeLabels ;public String execute(MessageModel messageModel,String message){System.out.println(已连接webSocket服务器参数信息message);//在内存中保存IP对应的websocket对象SashulinWebSocket webSocket (SashulinWebSocket)messageModel.object;JSONObject msgJson new JSONObject(message);String ip msgJson.getString(clientIP);if (!webSocket.clients.containsKey(ip)){webSocket.clients.put(ip, messageModel.object2);}return ok;}public String getRouteLabels(){return routeLabels;} }closeWebSocket客户端关闭的逻辑处理。 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*; import sashulin.websocket.SashulinWebSocket; public class csdn_websocketServer_closeWebSocket {private String routeLabels ;public String execute(MessageModel messageModel,String message){System.out.println(已断开与webSocket服务器的连接参数信息message);SashulinWebSocket webSocket (SashulinWebSocket)messageModel.object;String ip message;if (webSocket.clients.containsKey(ip)){webSocket.clients.remove(ip);}return ok;}public String getRouteLabels(){return routeLabels;}}processWebSocket消息收到后的处理逻辑。 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*; public class csdn_websocketServer_processWebSocket {private String routeLabels ;public String execute(MessageModel messageModel,String message){System.out.println(收到消息message);return ok;}public String getRouteLabels(){return routeLabels;}}三、JavaScript向websocket发送消息 通过JavaScript中向websocket服务器连接发送消息、关闭动作。本例示使用HtmlVCL前端框架进行开发也可以自己写测试界面代码。界面效果如图 本示例中包含了两个文件index.html和websocket.html。 index.html代码   meta charsetutf-8 link relstylesheet hrefcss/vcl.cssscript typetext/javascript srcjs/vcl.js/scriptscript typetext/javascriptfunction main() {var form new HtmlForm(null);form.align center;form.color blue;form.Refresh();var popupMenu1 new HtmlPopupMenu(form);popupMenu1.items [{id:1,text:copy},{id:2,text:paste},{id:-1,text:-},{id:3,text:cut}];popupMenu1.onclick function(obj,evt){alert(obj.text);alert(evt.id);alert(evt.text);}var topPanel new HtmlPanel(form);topPanel.align top;topPanel.alignment center;topPanel.color #333;topPanel.fontSize 14;topPanel.fontColor White;topPanel.nametopPanel1;//topPanel.text h1ChromeWebBrowser.net User Guide/h1;topPanel.Refresh();var logoPanel new HtmlPanel(topPanel);logoPanel.align left;logoPanel.width 200;logoPanel.Refresh();var logoImg new HtmlImage(logoPanel);logoImg.imageUrl img/sashulin.png;logoImg.left 18;logoImg.top 15;logoImg.width 32;logoImg.height 32;logoImg.Refresh();var top_right_panel new HtmlPanel(topPanel);top_right_panel.align right;top_right_panel.width 200;top_right_panel.Refresh();var userImg new HtmlImage(top_right_panel);userImg.imageUrl img/p.png;userImg.left 10;userImg.top 20;userImg.width 20;userImg.height 20;userImg.Refresh();var userLabel new HtmlLabel(top_right_panel);userLabel.alignment left;userLabel.left 40;userLabel.top 23;userLabel.width auto;userLabel.height 25;userLabel.text Hi,Roy;userLabel.fontColor white;userLabel.fontSize 14;userLabel.Refresh();var quitButton new HtmlLinkButton(top_right_panel);quitButton.top 20;quitButton.left 120;quitButton.width auto;quitButton.height 25;quitButton.text 退出;quitButton.fontColor white;quitButton.fontSize 14;quitButton.setUrl(index.html);quitButton.Refresh();var top_center_panel new HtmlPanel(topPanel);top_center_panel.align center;top_center_panel.Refresh();var popupMenu2 new HtmlPopupMenu(form);popupMenu2.items [{id:1,text:白血病},{id:2,text:肺炎},{id:-1,text:-},{id:3,text:流感}];popupMenu2.onclick function(obj,evt){alert(obj.text);alert(evt.id);alert(evt.text);}var titleLabel new HtmlLabel(logoPanel);titleLabel.alignment left;titleLabel.left 60;titleLabel.top 20;titleLabel.width 300;titleLabel.height 25;titleLabel.text Sashulin Message Broker示例;titleLabel.fontColor #00ffe2;titleLabel.fontSize 16;titleLabel.Refresh();var leftPanel new HtmlPanel(form);leftPanel.name leftPanel1;leftPanel.align left;leftPanel.color #e6e6e6;leftPanel.width 200;leftPanel.Refresh();var frame new HtmlFrame(form);frame.align center;frame.color White;// frame.setUrl(pages/method-EN.html);frame.setUrl(pages/tabs.html);frame.Refresh();var bottomPanel new HtmlPanel(form);bottomPanel.align bottom;bottomPanel.alignment center;bottomPanel.color #000;bottomPanel.height 25;bottomPanel.fontColor White;bottomPanel.text Author: Roy (173783000qq.com);bottomPanel.Refresh();var navBar new HtmlNavBar(leftPanel);navBar.name navBar1;navBar.align center;navBar.width 200;navBar.alignment center;navBar.color #393D49;navBar.items [{title:WebSocket,items:[{id:1,caption:WebSocket,img:img/p.png}]}];navBar.onGroupItemClick function(event){//alert(event.control.id:event.control.text); var url ;switch(event.control.id){case 1:url pages/websocket.html;break;default:url pages/method-EN.html;break;}frame.setUrl(url);}navBar.Refresh();}/scriptwebsocket.html代码 !DOCTYPE html script typetext/javascript src../js/vcl.js/script script typetext/javascriptfunction main() {var websocket;var form new HtmlForm(null);form.align center;form.color #eee;form.Refresh();//第一排var button1 new HtmlButton(form);button1.left 380;button1.top 50;button1.width 100;button1.height 30;button1.text 连接button1.onclick function () {websocket new WebSocket(edit1.text);websocket.onerror (event){ label_status.setText(WebSocket连接发生错误);};//连接成功建立的回调方法 websocket.onopen (event) { label_status.setText(已连接);} //接收到消息的回调方法 websocket.onmessage (event) { edit_content.setText(event.data);} //连接关闭的回调方法 websocket.onclose (event) { label_status.setText(已关闭);}}button1.Refresh();var closeButton new HtmlButton(form);closeButton.left 500;closeButton.top 50;closeButton.width 100;closeButton.height 30;closeButton.text 关闭closeButton.onclick function () { websocket.close();}closeButton.Refresh();var label_status new HtmlLabel(form);label_status.text --;label_status.left 100;label_status.top 20;label_status.Refresh();var label1 new HtmlLabel(form);label1.text 服务器;label1.left 100;label1.top 50;label1.Refresh();var edit1 new HtmlEdit(form);edit1.text ws://127.0.0.1:8100;edit1.left 160;edit1.top 50;edit1.width 200;edit1.Refresh();//第二排var button2 new HtmlButton(form);button2.left 380;button2.top 100;button2.width 100;button2.height 30;button2.text 发送button2.onclick function () {}button2.Refresh();var label2 new HtmlLabel(form);label2.text 发送内容;label2.left 100;label2.top 100;label2.Refresh();var edit2 new HtmlEdit(form);edit2.text 测试消息;edit2.left 160;edit2.top 100;edit2.width 200;edit2.Refresh();var label3 new HtmlLabel(form);label3.text 收到内容;label3.left 100;label3.top 150;label3.Refresh();var edit_content new HtmlEdit(form);edit_content.text ;edit_content.left 160;edit_content.top 150;edit_content.width 200;edit_content.Refresh();}/script 运行的效果 四、两个客户端通讯 在真实场景中是进行消息推送。我们在csdnProject工程进行以下先改 1、增加一个api接口 这个消息流的逻辑是开放一个api接口用户调用接口后向服务器发送websocket消息。在action组件中进行对websocketClient组件的操控代码如 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*; public class csdn_HttpFlow_action {private String routeLabels ;public String execute(MessageModel messageModel,String message){JSONObject json new JSONObject(message);String action json.getString(action);String text json.getString(text);switch(action){case send:FlowApi.execute(this,WebSocketClient1,send,message);break;case close:FlowApi.execute(this,WebSocketClient1,close,text);break;}return ok;}public String getRouteLabels(){return routeLabels;}}FlowApi.execute(this,WebSocketClient1,send,message); //执行websocketClient的Send操作。 FlowApi.execute(this,WebSocketClient1,close,text); //执行websocketClient的Close操作。 2、修改processWebSocket组件代码 修改服务器的消息接收后的逻辑处理。即向指定的客户发送消息 package sashulin.apps; import sashulin.Models.MessageModel; import sashulin.applications.FlowApi; import org.json.JSONArray; import org.json.JSONObject; import java.sql.*; import sashulin.websocket.SashulinWebSocket; import org.java_websocket.WebSocket; public class csdn_websocketServer_processWebSocket {private String routeLabels ;public String execute(MessageModel messageModel,String message){System.out.println(收到消息message);JSONObject json new JSONObject(message);String destIP json.getString(destIP);String text json.getString(text);SashulinWebSocket webSocket (SashulinWebSocket)messageModel.object;if (webSocket.clients.containsKey(destIP)){Object obj webSocket.clients.get(destIP);WebSocket conn (WebSocket)obj;conn.send(text);}return ok;}public String getRouteLabels(){return routeLabels;}}3、测试消息发送 首先在SashulinMessageBroker示例中连接服务器 然后再PostMan中发送消息 SMB示例中收到来自于postman的消息 结束语应用于生产环境中会更复杂但核心点还是在ProcessMessage组件这里把消息推送何处推送几次这些可以做成策略。目前我们全院消息通讯平台也是按这个逻辑进行开发在国内西南某大型儿童医院为例进行了2000个客户端20几个系统的消息对接和众多业务场景设计稳定、准确运行。
http://www.dnsts.com.cn/news/56818.html

相关文章:

  • 哪里培训做网站wordpress多用户博客系统
  • DMZ做网站工装网站建设方案
  • 静态网站建设摘要西安专业做网站建
  • 网站设计的步骤深圳网站建设 利科技有限公司
  • 天津专业做网站的公司有哪些湖州网站设计建设
  • 湖北什么是网站建设宁波企业网站建设公司
  • 网站开发需要多少钱销售怎么制作公众号教程
  • 旅游网站建设技术有哪些内容中国网页设计欣赏
  • 网站建设Z亿玛酷1流量订制肇庆网站建设维护
  • 专利减缓在哪个网站上做无线网络建设方案
  • 西安网站关键词优化费用网站建设如何跑单子
  • 免费图标下载网站珠海生活网
  • 三晋联盟做网站需要多钱php黄页系统
  • 越秀手机网站建设自己建站的网站
  • 做一个论坛网站需要多少钱app开发软件怎么做
  • 怎么用网站做地标网页设计什么软件
  • 北京网站优化步骤拉趣网站是谁做的
  • 襄阳市做网站的公司南通企业做网站
  • 来个黑黑的网站小程序源码怎么打开
  • 贵州建设厅网站办事大厅企业做网站需要什么软件
  • 网站图片规格枣庄市 网站建设
  • 国家网站icp备案查询友情链接交换平台免费
  • 网站显示正在建设中wordpress数据库配置
  • 中联汇科 网站建设深圳市招聘网站
  • 建设校园网站网站建设分录怎么开
  • 网站建设设计企业小型网站设计及建设论文范本
  • 为什么学网站开发岳阳建设局网站
  • 自己制作网站该怎么做用qq号码可以做网站吗
  • 怎样删除网站wordpress授权破解
  • 网站音乐播放器代码影视网站建设多少钱