-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
87 lines (79 loc) · 2.51 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var net = require('net');
var fs = require("fs");
var http = require("http")
var socketio = require('socket.io');
var url = require("url");
var ip = '192.168.1.3';
var port = 26881;
var openurl = require("openurl");
var socketio_client;
var tcpSocket;
//start of tcp ------------------------------------
function error_handeling(socket) {
socket.on('error', s =>{
console.log('Err on client connection!')
tcpSocket = null;
})
socket.on('close', socket => {
console.log('Connection closed ', socket.ip);
tcpSocket = null;
});
}
var server = new net.createServer(error_handeling);
server.on('connection', (socket =>{
console.log(`one device connected ${socket.localAddress}`);
tcpSocket = socket;
socket.on('data' , data => {
console.log('Received: ' + data);
//data must be something like 1,1,500
data = data + '';
var arr = data.split(',');
//error handeling
if(!arr || arr.length != 3){
console.log('invalid input data');
return;
}
if( arr[0] > 1 || arr[0] < 0 || arr[1] < 0 || arr[1] > 1|| arr[2] > 1000 || arr[2] < 0 ){
console.log('invalid data range');
return;
}
arr = arr.map(r => parseInt(r))
socketio_client.emit('drive', {wheel: arr[0], dir: arr[1], speed: arr[2]})
});
}))
server.listen(port, () =>{
console.log(`listening on ${port}`);
})
// end of tcp ------------------------------------------
//start of http
var httpserver = http.createServer((request, response) => {
//findout what file where requested
var pathName =url.parse(request.url).pathname;
//reading the file date and return the data to the web client
fs.readFile(__dirname + pathName, (err, data) => {
if(err){
response.writeHead(404, {'Content-type':'text/plan'});
response.write('Page Was Not Found');
response.end( );
}else{
response.writeHead(200);
response.write(data);
response.end( );
}
})
})
console.log("web server running on 4098");
//end of http
httpserver.listen(4098);
//open the canvas on browser
openurl.open("http://localhost:4098/template/canvas.html");
var io = socketio(httpserver);
//connecting to ui via socket.io -------------------------------
io.sockets.on('connection', function(socket){
console.log('a user connected');
socketio_client = socket;
socket.on('pos', (data) =>{
if(tcpSocket)
tcpSocket.write(JSON.stringify(data));
})
});