创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下:

npm install nodejs-websocket

1.搭建websocket服务端(app.js)


  //websocket
  var ws = require('./node_modules/nodejs-websocket');

var server = ws.createServer(function (connection) {
//接收到字符串str
connection.on("text", function (str) {
});

connection.on("close", function () {
    //客户端关闭
  }); connection.on("error", function () {
//error
});
}); //服务端开启监听127.0.0.1:8000
server.listen(8000, "127.0.0.1", () => {
console.log("server running at 127.0.0.1:8000");
});

2. 创建events事件管理(EventsMs.js)

var EventsMs = module.exports;

var EventEmitter = require('events').EventEmitter;
var emitter = new EventEmitter(); /**
* 派发事件
* key 事件名称
* fun 事件
* is_only 是否唯一
*/
EventsMs.dispatch = function (key, fun, is_only) {
if (is_only) {
//移除当前key的所有监听
emitter.removeAllListeners(key);
}
//注册事件
emitter.addListener(key, fun);
} /**
* 触发事件
* key 事件名称
*/
EventsMs.trigger = function (key, info) {
emitter.emit(key, info);
}

3.服务端接收数据详解

客户端通过使用websocket访问服务端(127.0.0.1:8000)时,服务端通过server对象中的str获取到客户端传递过来的参数

    //接收到字符串str
connection.on("text", function (str) {
     var data = JSON.parse(str);
});

为了数据传输方便,将数据格式固定为 {code:事件编码,info:传输数据},使用JOSN.parse方法获取到传递过来的数据。根据code值进行寻找相应的处理方法处理请求

4.客户端请求的处理方法

   //引用事件管理(EventsMs.js)
var events = require("EventsMs"); ....todo //接收数据
connection.on("text", function (str) {
var client = JSON.parse(str);
if (client.code) {
var info = {
data: client
conn: connection
};
events.trigger(client, info);
}
});

5.服务端处理请求方法(Handler.js)

var Handler = module.exports;
var events = require("EventsMs"); Handler.register = function () {
events.dispatch(监听的事件编号, function (info) {
    //当前用户的链接
var conn = info.conn;
    //客户端传递过来的数据
var data = info.data;

    //服务端返回数据
var msg = JSON.stringify({
        //jsonata
});
//向客户端返回数据
    conn.sendText(msg);
}, true);
}

6.在 入口文件(app.js)中注册Handler.js的事件监听

//服务端开启监听
server.listen(8000, "127.0.0.1", () => {
registerServer();
console.log("server running at 127.0.0.1:8000" );
}); /**
* 注册所有服务
*/
function registerServer() {
require("Handler"). register();
}

至此,基于nodejs的websocket服务端搭建完成,新建事件监听的时候可以新建Handler.js或者在现有的Handler.register方法中添加events.dispatch

最新文章

  1. 【面试】HTTP post请求与get请求的区别
  2. android largeheap 的设定
  3. java.lang.NoClassDefFoundError: javax/el/ELResolver 问题解决
  4. django中css问题
  5. 【翻译六】java-连接和实例
  6. C#获取HTML文件指定DIV内容
  7. dede如何实现二级栏目导航的仿制
  8. [javascript] ajaxfileupload.js 跨域上传文件
  9. Android点击View显示PopupWindow,再次重复点击View关闭PopupWindow
  10. photoshopCS4换中文
  11. Eclipse调试Java的10个技巧
  12. 下载centos6.4
  13. js 过滤敏感词 ,可将带有标点符号的敏感词过滤掉
  14. FC总线技术简介
  15. python-list操作
  16. SpringBoot入门教程(八)配置logback日志
  17. 配置python3
  18. 网页偶现性崩溃-chrome
  19. Mvc_model实体数据验证
  20. Maven- 自动导入包的方法-很多没有导入的类,如何处理

热门文章

  1. mac 下mysql常用命令
  2. 最小二乘法及C语言实现
  3. java 几个线程池的理解
  4. 关于阿里 weex 的使用与案例
  5. js 淘宝评分
  6. Win7如何修复开机画面
  7. SharePoint 2013 对话框
  8. Python 2.7 升 3.4
  9. nginx配置:支持phpfastcgi,nginx和php-cgi通信,部分nginx常量解释
  10. Timer与ScheduledExecutorService间的抉择