netdde
Version:
A JavaScript implementation of the NetDDE protocol
58 lines (49 loc) • 1.7 kB
JavaScript
const net = require('net');
const NetDDEClientSerializer = require('../../src/client/serializer');
const NetDDEClientParser = require('../../src/client/parser');
const C = require('../../src/constants');
const os = require('os');
let serializer = new NetDDEClientSerializer();
let parser = new NetDDEClientParser();
let counter = 1, convPtr, convId, currentService;
serializer.on('error', e => console.log(' # Serializer ERROR:', e));
parser.on('error', e => console.log(' # Serializer ERROR:', e));
parser.on('data', d => console.log(' < DATA', d));
parser.on('data', d => {
if (d.type == C.DDE_CREATE_CONVERSATION) {
convPtr = d.payload.convPtr;
convId = d.payload.convId;
}
});
let sock = net.createConnection(8888, '192.168.15.119');
sock.on('error', e => console.log(' # Socket ERROR:', e));
sock.on('connect', () => console.log(' # Socket Connected!'));
sock.pipe(parser);
serializer.pipe(sock);
function send(type, payload) {
serializer.write({
id: counter++,
type, payload
})
}
function connect(service = 'PROGMAN') {
currentService = service;
send(C.NETDDE_CLIENT_CONNECT, {
service: service,
computer: os.hostname(),
user: os.userInfo().username,
process: process.argv0,
version: "v2.0"
})
}
function convStart(service = 'PROGMAN', topic = 'PROGMAN') {
send(C.DDE_CREATE_CONVERSATION, { service, topic });
}
function convRequest(item) {
send(C.DDE_REQUEST, { convPtr, convId, item });
}
function end() {
send(C.DDE_DESTROY_CONVERSATION, { convPtr, convId});
send(C.NETDDE_CLIENT_DISCONNECT, { service: currentService, computer: os.hostname()});
sock.end();
}