If this is more of an engine.io or socket.io question, I apologize in 
advance...

I am working on getting nodejs / socket.io / express running on busybox 
linux on an ARMv5TE processor. I have nodejs up and running and the 
following code runs without errors.

var app = require('express')();var server = require('http').Server(app);var io 
= require('socket.io')(server);

server.listen(80);

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

io.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });}); 

Until I try to connect via websocket from a client. From the browser (with 
the client script socket.io.jsloaded), var socket = 
io.connect('ws://192.168.1.8:3000'); or var socket = 
io.connect('http://192.168.1.8:3000');. Node then logs this error to the 
console and stops:

buffer.js:784
    throw TypeError('value is out of bounds');
TypeError: value is out of bounds
    at TypeError (<anonymous>)
    at checkInt (buffer.js:784:11)
    at Buffer.writeInt32BE (buffer.js:924:5)
    at Base64Id.generateId 
(/usr/lib/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/lib/base64id.js:88:8)
    at Server.handshake 
(/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:222:21)
    at 
/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:184:12
    at Server.checkRequest (/usr/lib/node_modules/socket.io/lib/index.js:67:51)
    at Server.verify 
(/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:127:17)
    at Server.handleRequest 
(/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:174:8)
    at Server.<anonymous> 
(/usr/lib/node_modules/socket.io/node_modules/engine.io/lib/server.js:362:12)

Running the same node server from my desktop computer (Windows 8 64 bit), 
does not produce this error.

I can trace the error to these lines of code in 
node_modules/socket.io/node_modules/engine.io/node_modules/base64id/lib/base64id.js
:

Base64Id.prototype.generateId = function () {
    var rand = new Buffer(15); // multiple of 3 for base64
    if (!rand.writeInt32BE) {
        return Math.abs(Math.random() * Math.random() * Date.now() | 
0).toString() + Math.abs(Math.random() * Math.random() * Date.now() | 
0).toString();
    }this.sequenceNumber = (this.sequenceNumber + 1) | 0;
rand.writeInt32BE(this.sequenceNumber, 11);...

If I change rand.writeInt32BE(this.sequenceNumber, 11); to 
rand.writeInt32BE(this.sequenceNumber, 
11, true);, the error goes away and I can continue on without problems 
(presumably). So:

   - Why does this error occur when running my code from the ARMv5TE 
   machine?
   - Is my change to base64id.js safe or appropriate?

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/881915f5-d6a2-4e42-87dd-41c6bf2f2fb5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to