Есть код
#!/usr/bin/env node
var WebSocketServer = require('ws');
// подключенные клиенты
var clients = [];
// WebSocket-сервер на порту 3081
var webSocketServer = new WebSocketServer.Server({port: 3081});
webSocketServer.on('connection', function (ws) {
var id = clients.push(ws);
console.log("новое соединение " + id);
ws.on('message', function (message) {
console.log('получено сообщение ' + message);
for (var key in clients)
try {
clients[key].send(message);
} catch (e) {
delete clients[id];
}
});
});
При запуске и подключении клиентов всё нормально, но вот про передаче сообщения node.js падает с такой ошибкой
новое соединение 1
новое соединение 2
/var/www/redcreepster.ru/node_modules/ws/lib/PerMessageDeflate.js:217
callback(null, Buffer.concat(buffers));
^
TypeError: Object function Buffer(subject, encoding, offset) {
if (!(this instanceof Buffer)) {
return new Buffer(subject, encoding, offset);
}
var type;
// Are we slicing?
if (typeof offset === 'number') {
this.length = coerce(encoding);
this.parent = subject;
this.offset = offset;
} else {
// Find the length
switch (type = typeof subject) {
case 'number':
this.length = coerce(subject);
break;
case 'string':
this.length = Buffer.byteLength(subject, encoding);
break;
case 'object': // Assume object is an array
this.length = coerce(subject.length);
break;
default:
throw new Error('First argument needs to be a number, ' +
'array or string.');
}
if (this.length > Buffer.poolSize) {
// Big buffer, just alloc one.
this.parent = new SlowBuffer(this.length);
this.offset = 0;
} else {
// Small buffer.
if (!pool || pool.length - pool.used < this.length) allocPool();
this.parent = pool;
this.offset = pool.used;
pool.used += this.length;
}
// Treat array-ish objects as a byte array.
if (isArrayIsh(subject)) {
for (var i = 0; i < this.length; i++) {
this.parent[i + this.offset] = subject[i];
}
} else if (type == 'string') {
// We are a string
this.length = this.write(subject, 0, encoding);
}
}
SlowBuffer.makeFastBuffer(this.parent, this, this.offset, this.length);
} has no method 'concat'
at /var/www/redcreepster.ru/node_modules/ws/lib/PerMessageDeflate.js:217:27
at InflateRaw.callback (zlib.js:404:13)
Установку ws проводил так
npm install ws npm http GET http://registry.npmjs.org/ws
npm http 304 http://registry.npmjs.org/ws
npm http GET http://registry.npmjs.org/nan
npm http GET http://registry.npmjs.org/options
npm http GET http://registry.npmjs.org/ultron
npm http 304 http://registry.npmjs.org/ultron
npm http 304 http://registry.npmjs.org/nan
npm http 304 http://registry.npmjs.org/options
> ws@0.6.4 install /var/www/redcreepster.ru/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
ws@0.6.4 ./node_modules/ws
├── options@0.0.6
├── ultron@1.0.1
└── nan@1.4.1