1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Любая версия [Free][Node.js] TCP Network Toolkit

Тема в разделе 'PW Разработки', создана пользователем salitypw, 7 июл 2018.

  1. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Achtung!!! Не является готовым решением, это всего лишь набор инструментов для разработчиков.
    TCP Network Toolkit - набор говнокода инструментов для Node.js, который являет собой "скелет" для построения приложений работающих с сетью.
    Особой полезностью для PW не отличается, может пригодиться для тех, кто решил немного упороться и переписать некоторые не очень объемные (в плане времени на разработку) игровые сервисы с нуля.
    Использовать на свой страх и риск.
    Сорцы - https://github.com/mvcbox/node-tcp-network-toolkit
    P. S. Документацию набросаю на досуге, пока что только примеры использования:
    Сервер:
    Код:
    'use strict';
    
    const net = require('net');
    const {
        BaseProtocol,
        NetworkBuffer,
        hydratorFactory,
        packetRouterFactory,
        packetParserStreamFactory
    } = require('tcp-network-toolkit');
    
    /* ------------------------------------------------------------------------------------------------------------------ */
    // Some packet
    
    /**
    * @property {number} someProperty
    */
    class SomePacket extends BaseProtocol {
        /**
        * @param {NetworkBuffer|Buffer|Object} buffer
        */
        constructor(buffer) {
            super(buffer || {
                someProperty: 0 // Default value
            });
        }
    
        /**
        * @returns {number}
        * @private
        */
        static get _opcode() {
            return 1;
        }
    
        /**
        * @returns {NetworkBuffer}
        * @private
        */
        _marshal() {
            let buffer = this._makeBuffer(4);
            buffer.writeInt32BE(this.someProperty);
            return buffer;
        }
    
        /**
        * @param {NetworkBuffer} buffer
        * @private
        */
        _unmarshal(buffer) {
            this.someProperty = buffer.readInt32BE();
        }
    }
    
    /* ------------------------------------------------------------------------------------------------------------------ */
    // Packet routes
    
    const router = packetRouterFactory();
    
    // Add middleware
    router.use(function (packet, client, next) {
        console.log('Middleware 1:', packet);
        next();
    });
    
    // Add route
    router.use(1, function (packet, client, next) {
        console.log('Route 1:', packet);
        packet.someProperty = 123;
        client.write(packet._buildPacket().buffer);
        next();
    });
    
    // Add route
    router.use(5, function (packet, client, next) {
        console.log('Route 5:', packet);
        next();
    });
    
    // Add route
    router.use([1, 2, 3], function (packet, client, next) {
        console.log('Route [1, 2, 3]:', packet);
        packet.someProperty = 456;
        client.write(packet._buildPacket().buffer);
        next();
    });
    
    // Add middleware
    router.use(function (packet, client, next) {
        console.log('Middleware 2:', packet);
        next();
    });
    
    /* ------------------------------------------------------------------------------------------------------------------ */
    // Create hydrator
    
    const hydrator = hydratorFactory([
        SomePacket
    ]);
    
    /* ------------------------------------------------------------------------------------------------------------------ */
    // TCP Server
    
    net.createServer(function (client) {
        client.pipe(packetParserStreamFactory(hydrator)).pipe(router.stream(client));
    }).listen(3000);
    
    Последнее редактирование: 8 июл 2018
    int 3, ГрУбОсТь и Denis-root нравится это.
  2. Samuel Пользователи

    Сообщения:
    167
    Лайки:
    85
    Пол:
    Мужской
    Репутация:
    -5
    JonMagon нравится это.
  3. TopicStarter Overlay

    salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Это уже целиком будет зависеть от тех, кто будет писать :)
    Также, если кто-то и решиться переписывать, то не с целью "СДЕЛАТЬ ИХ ЕЩЁ ХУЖЕ" и убить кучу времени в никуда, а с целью изменить дефолтное поведение или допилить новый функционал.
    Естественно, что пытаться перепиливать gs, gdeliveryd и т.д. никто не будет.
    Как по мне, то в качестве потенциальных целей можно выделить всего лишь: authd, gacd, logservice
Черновик сохранён Черновик удалён
Similar Threads
  1. Antinight
    Ответов:
    2
    Просмотров:
    823
  2. Hopewake.
    Ответов:
    5
    Просмотров:
    1.380
  3. bleR
    Ответов:
    0
    Просмотров:
    1.454
  4. LiptoN[Triton]
    Ответов:
    11
    Просмотров:
    1.970
  5. salitypw
    Ответов:
    10
    Просмотров:
    3.138
Загрузка...

Поделиться этой страницей