49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
// import all dependencies
|
|
const express = require('express');
|
|
const app = express();
|
|
const http = require('http').Server(app);
|
|
const io = require('socket.io')(http);
|
|
const http_port = process.env.PORT || 61813;
|
|
const net = require('net');
|
|
const input_port = 1337;
|
|
|
|
// define canvas
|
|
var canvas_size_x = 100;
|
|
var canvas_size_y = 100;
|
|
|
|
// define static folder
|
|
app.use(express.static(__dirname + '/public'));
|
|
|
|
// output socket
|
|
io.on('connection', function (socket){
|
|
console.log("[HTTP] new connection");
|
|
socket.emit('setting', {canvas: {size: {x: canvas_size_x, y: canvas_size_y}}});
|
|
});
|
|
|
|
// input socket
|
|
var server = net.createServer();
|
|
|
|
server.on('connection', function (server_socket) {
|
|
server_socket.setEncoding('utf8');
|
|
console.log('[INPUT] new input');
|
|
server_socket.on('data', function (data) {
|
|
var command = data.split(" ");
|
|
if (command.length == 4) {
|
|
if (command[0] == "PX") {
|
|
var x = parseInt(command[1]);
|
|
var y = parseInt(command[2]);
|
|
if (!isNaN(x) && !isNaN(y)) {
|
|
var color = command[3]
|
|
io.sockets.emit('draw', {type: 'pixel', x: x, y: y, color: color});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// start http
|
|
http.listen(http_port, () => console.log('[HTTP] port: ' + http_port));
|
|
|
|
// start input socket
|
|
server.listen(input_port, () => console.log('[INPUT] port: ' + input_port));
|