499689317 / notes

note
2 stars 0 forks source link

websocket #19

Open 499689317 opened 6 years ago

499689317 commented 6 years ago
// 服务端
var ws = require("ws");

(function() {

    var webSocket = new ws.Server({port: 8084 });
    webSocket.on("connection", function(socket) {

        socket.on("message", function(msg) {

            console.log(msg);
            socket.send("123");
        });

        // 断开连接
        socket.on('close', function(err) {

            console.error(err);
        });
    });
})();
// 客户端

var ws = require('ws');
var url = "ws://192.168.2.41:8084";
var util = require('./util');
var MF = require('../../common/lib/mf');
var robotConfig = require('../robotConfig').robotConfig;

(function() {

    var ids = [/*玩家id集合*/];
    for (var i = util.CONST.MIN; i < util.CONST.MAX; i++) {
        ids.push(robotConfig.serverId + util.CONST.USERID + i);
    };
    console.log("开始登录聊天服");

    var sockets = {};
    (function init() {

        var id = ids.pop();
        sockets[id] = createConn(id, function(err, msg) {

            if (ids.length) {

                init();
            } else {

                // 监听数据
                if (err) {return;}
                if (msg.packName == "login") {

                    return;
                };
                // if (count >= util.CONST.MAX) {
                //  console.log(Object.keys(sockets) );
                // };

                // var id = MF.Crypto.Decrypt(msg.playerId);
                // console.log(id);

            }
        });
    })();
})();

function createConn(id, cb) {

    if (!id) {
        console.log("id为空");
        return;
    };

    console.log(id + "登录聊天服务器");
    var socket = new ws(url);
    socket.on('open', function() {

        socket.send(JSON.stringify({userId: id, packName: "login"}) );

    });

    socket.on("message", function(data) {
        cb && cb(null, JSON.parse(data));
    });

    socket.on("error", function(err) {
        console.log(err);
        cb && cb(err);
    });

    socket.on("timeout", function(err) {
        console.log(err);
        cb && cb(err);
    }, 5000);
    return socket;
};