0
votes

I am new to nodeJS...and programming. But I have tried to get this bit of code to work and I cannot understand why it does not seem to work. Whats worse is I do not know how to troubleshoot it either. If I use console.log statements, I can see that once I launch the webpage, it DOES connect, but the webpage never gets a message from the nodeJS server and the server never gets a message from the webpage. I am using Chrome browser.

server.js:

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);
    server.listen(80);

app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

var SerialPort = require('serialport');
var portName = process.argv[2];
var sp = new SerialPort(portName, {
        baudRate: 9600,
        dataBits: 8,
        parity: 'none',
        stopBits: 1,
        flowControl: false
    });

io.sockets.on('connected', function (socket) {
    socket.emit('connected', {
        data: 'connected'
    });

    socket.on('connected', function (data) {
        console.log(data);

        //Code
        console.log('Sending Packet. Contents:');
        sp.write(packet);
        console.log(packet);
        console.log('Packet Sent');
    });
});

I launch it from command prompt on raspbery pi zero w:

sudo node server.js /dev/ttyACM0

The index.html references the interface.js. The top part of interface.js:

$(document).ready(function() {
    // Connect to the node.js server. Gets server's local ip.
    // Using this method robot can only be connected to on
    // local network. 
    var ip = location.host;
    var socket = io.connect(ip); // Connects to server
    // Upon establishing a connection to the socket.io server...
    socket.on('connected', function (data) {
        console.log(data);
        // Send out a message to the server
        socket.emit('connected', { command: 'nothing' });
    });

When I have console.log statements in the interface.js I get them until the socket.on statement.

node -v v6.4.0 npm -v 5.3.0 npm list socket.io [email protected] uname -m armv6l

Edit: Updated messaging commands. Same issue. Also

1
"I connected" (client) versus "It connected" (server).robertklep
Thanks for the help. Updated question. I gave that a go, made both say connected. Same issue.D_M
There's still a mismatch between events that the client sends ("My command") and the server expects ("The Command"), and vice versa ("It connected" versus "connected", the latter actually being a built-in event).robertklep

1 Answers

0
votes

Well, turns out I have the wrong version of socket.io.js. So. That was a week of learning. Thanks for the help.