Node.JS WebSocket и Socket - PullRequest
       24

Node.JS WebSocket и Socket

1 голос
/ 08 октября 2011

Я хочу смешать два потока обычного сокета и WebSocket. Все полученные сообщения сокетов должны передаваться через веб-сокет всем подключенным пользователям.

У меня есть эта часть кода:

var net = require('net');
var io = require('socket.io').listen(13673, 'localhost');

net.createServer(function (stream) {
  stream.setEncoding('utf8');
  stream.on('data', function (data) {
    // HERE SHOULD BE WS BROADCAST
    console.log(data);
  });
}).listen(24768);

io.sockets.on('connection', function (socket) {
  socket.on('message', function (text) {
    var message = {
      'type': 'message',
      'received': new Date(),
      'text': text
    };

    socket.broadcast.json.send([message]);
    socket.json.send([message]);
  });
});

Итак, в отдельности все работает просто отлично, но я хочу постоянно слушать обычный сокет и обрабатывать полученные сообщения в WebSocket. Поместить одно в другое не работает.

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Попробуйте сохранить массив подключенных клиентов WebSocket, и при получении сообщения сокета TCP выполните цикл по массиву и отправьте каждому клиенту сообщение:

var net = require('net');
var io = require('socket.io').listen(13673, 'localhost');

var clients = [];

net.createServer(function (stream) {
    stream.setEncoding('utf8');
    stream.on('data', function (data) {
        // HERE SHOULD BE WS BROADCAST
        for(var i = 0; i < clients.length; i++)
            clients[i].json.send(/*your message*/);
        console.log(data);
    });
}).listen(24768);

io.sockets.on('connection', function (socket) {
    clients.push(socket);
});
0 голосов
/ 19 марта 2013

Вы можете использовать функцию io.sockets.emit для трансляции на сокеты, подключенные через socket.io

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

server.listen(80);

io.sockets.on('connection', function (socket) {
    console.log("NEW SOCKET");
});

function sendToBrowser(message){
    io.sockets.emit('news', {data: message});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...