nodejs搭建簡單的websocket服務端

建立websocket服務端使用了nodejs-websocket ,首先要安裝nodejs-websocket,在項目的目錄下:node

npm install nodejs-websocket

1.搭建websocket服務端(app.js)web

 
 

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

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)json

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

客戶端經過使用websocket訪問服務端(127.0.0.1:8000)時,服務端經過server對象中的str獲取到客戶端傳遞過來的參數app

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

爲了數據傳輸方便,將數據格式固定爲 {code:事件編碼,info:傳輸數據},使用JOSN.parse方法獲取到傳遞過來的數據。根據code值進行尋找相應的處理方法處理請求socket

4.客戶端請求的處理方法ui

   //引用事件管理(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的事件監聽spa

//服務端開啓監聽
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

相關文章
相關標籤/搜索