创建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

nodejs服务端开发学习笔记的更多相关文章

  1. node服务端搭建学习笔记

    咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ...

  2. 初识NodeJS服务端开发(Express+MySQL)

    http://www.alloyteam.com/2015/03/sexpressmysql/

  3. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  4. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  5. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  6. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  7. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  8. ASP.NET Core Web开发学习笔记-1介绍篇

    ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...

  9. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

随机推荐

  1. iMac Termanel命令まとめ

    1.mac环境下命令的使用ls -l -a   列出指定目录下文件           -l 显示文件的详细信息           -a 显示目录下所有文件(包括隐藏文件)           -d ...

  2. 简单的实现树莓派的WEB控制

    最终效果如图: 用到的知识:Python Bottle HTML Javascript JQuery Bootstrap AJAX 当然还有 linux 我去,这么多--我还是一点一点说起吧-- 先贴 ...

  3. SingleNumber python实现

    Single Number Given an array of integers, every element appears twice except for one. Find that sing ...

  4. SQL Server FileStream优点与不足

    LOB优点: 1.保证大对象的事务一致性. 2.备份与还原包括大数据对象,可以对它进行时点恢复. 3.所有数据都可以使用一种存储与查询环境. LOB不足: 1.大型对象在缓存中占非常大的缓存区. 2. ...

  5. SQL Server 一些重要视图4

    sys.master_files 为每一个数据库的每一个文件返回行.

  6. qtcreator增加doxygen注释

    1,在以下网址找到和你的qt creator版本相对应的插件文件,还要注意系统版本 http://dev.kofee.org/projects/qtcreator-doxygen/files 2,根据 ...

  7. 数组Magic Index

    Question A magic index in an array A[1...n-1] is defined to be an index such that A[i] = i. Given a ...

  8. 解决Node.js调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)

    2014-08-23 今天开始学习Node.js,在写一个文件上传的功能时候,调用fs.renameSync方法错误 出错代码所在如下: function upload(response,reques ...

  9. 基于Qt的图像采集系统

    硬件 Point Gray Camera 型号:FL3-U3-13S2C-CS 参数 Sony IMX035 CMOS, 1/3", 3.63 µm Rolling Shutter 1328 ...

  10. bootstrap 响应式布局 居中问题

    大家能够通过table来设置居中: display: table; width: auto; margin-left: auto; margin-right: auto;