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