创建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搭建简单的websocket服务端的更多相关文章

  1. 用nodejs快速实现websocket服务端(带SSL证书生成)

    有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的 ...

  2. Netty 搭建 WebSocket 服务端

    一.编码器.解码器 ... ... @Autowired private HttpRequestHandler httpRequestHandler; @Autowired private TextW ...

  3. asp.net网站作为websocket服务端的应用该如何写

    最近被websocket的一个问题困扰了很久,有一个需求是在web网站中搭建websocket服务.客户端通过网页与服务器建立连接,然后服务器根据ip给客户端网页发送信息. 其实,这个需求并不难,只是 ...

  4. Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端

    Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端 目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Se ...

  5. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  6. C# WebSocket 服务端示例代码 + HTML5客户端示例代码

    WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...

  7. Linux搭建SVN服务器(服务端)

    Linux搭建SVN服务器(服务端) 1 安装SVN SVN客户端:TortoiseSVN,官网下载:https://tortoisesvn.net/downloads.html(客户端) # yum ...

  8. 无框架完整搭建安卓app及其服务端(一)

    技术背景: 我的一个项目做的的是图片处理,用 python 实现图片处理的核心功能后,想部署到安卓app中,但是对于一个对安卓和服务器都一知半解的小白来说要现学的东西太多了. 而实际上,我们的项目要求 ...

  9. DotnetBrowser入门教程-(3)启动与使用简单的WebSocket服务

    websocket是个很好的通信协议,基本可以贯穿支持html5的所有设备.dotnetbrowser内置了对websocket服务端与客户端的支持.请看例子: 1.新建桌面项目,基于.net 4.0 ...

随机推荐

  1. MFC中 编辑框输入换行功能

    首先修改编辑框的属性: Multiline 设为true , Auto HScroll 设为true , Auto VScroll 设为 true . 然后响应PreTranslateMessage( ...

  2. 2017.2.13 开涛shiro教程-第十二章-与Spring集成(一)配置文件详解

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第十二章-与Spring集成(一)配置文件详解 1.pom.xml ...

  3. linux中seq命令用法

    NAME seq - print a sequence of numbers SYNOPSIS seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq ...

  4. Android Studio中利用JavaDoc生成项目API文档

    1. 在Android Studio中的菜单项中点击Generate JavaDoc

  5. leetcode 46-Permutations and 47-Permutations II

    Permutations Given a collection of numbers, return all possible permutations. For example, [1,2,3] h ...

  6. 8种移动APP导航设计模式对照

    当我们确定了移动APP的设计需求和APP产品设计流程之后,開始着手设计APP界面UI或是APP原型图啦.这个时候我们都要面临的第一个问题就是怎样将信息以最优的方式组合起来? 或许我们对照和了解了其它一 ...

  7. 使用FDTemplateLayout框架打造个性App

    效果展示 project下载地址 · 进入构建结构 首先我们新建一个project 接下来我们拖进来一个Table View Controller,将Storyboard Entry Point指向我 ...

  8. PHP之面向对象学习

    1.类 Class lio{ Public Protect Private Function __constructor(){} } 2.类的实例化 <? php class lio{ //定义 ...

  9. OCP学习基本知识点总结

     下面是我总结的OCP教程的知识点.以备參考之用. 1, What's Oracle Server? ·         It's a database management system that ...

  10. Oraclet提交提示Record is locked by another user错误

    http://blog.csdn.net/alifel/article/details/4324338下午修改oracle datebase中的字段时,提示"Record is locked ...