Как подключить WSO2CEP к Socket.io?

Я хочу создать издателя событий, который подключается через Websocket. Когда я пытаюсь подключить его к своему простому серверу ввода-вывода сокетов, URL-адрес

 ws://localhost:3000/socket.io/

Он не получил поток ..

Я установил встроенный формат для потока следующим образом:

42["input-message",{"LAT":{{latitude}},"LON":{{longitude}}}]

person faruk    schedule 08.10.2015    source источник
comment
Вы проверили документ WSO2 на этом сайте? Как они это сделали?   -  person soorapadman    schedule 08.10.2015
comment
Я уже следил за руководством в здесь и добавлял некоторые собственные встроенные формат   -  person faruk    schedule 08.10.2015
comment
хорошо, в чем проблема? это исключение?   -  person soorapadman    schedule 08.10.2015


Ответы (2)


Если я правильно понял ваш вопрос,

  • вы не получаете никаких ошибок, когда событие публикуется с сервера CEP
  • но сервер сокетов io также не показывает никаких признаков того, что он получил событие.

Сервер CEP, на котором нет журналов ошибок, означает:

  • CEP-сервер успешно подключен к серверу socket io. (если соединение прервано, вы должны увидеть журнал ошибок, и CEP попытается восстановить соединение)
  • Probably the event was sent to socket io server by Websocket publisher (or the Websocket publisher did not recieve any event at all to be sent to socket io server)
    • (When you send an event, if the CEP server cannot parse the event, then also you should see an error log.)

Вот некоторые моменты, которые могут помочь вам решить проблему:

  1. Включите трассировку в своем веб-издателе (см. этот документ "Event Tracer" ). Затем отправьте событие и проверьте трассировку. Это позволит вам проверить, получил ли издатель Websocket событие.
  2. Если для издателя показаны трассировки, но по-прежнему не получено событие на сервере ввода-вывода сокета, возможно, на сервере ввода-вывода сокета произошла какая-то ошибка, и исключение не регистрируется (возможно, оно было проглочено).

Надеюсь, это поможет.

person Dilini    schedule 10.10.2015
comment
Думаю проблема не в wso2cep, а в socket.io. Поскольку Socket io использует сеанс, чтобы различать каждое соединение. Поэтому одним из решений является создание нового веб-сокета, который соединяет издателя событий с socket.io. - person faruk; 12.10.2015

Поскольку я не могу напрямую подключиться к socket.io, я создал простой веб-сокет, который действует как промежуточное программное обеспечение, которое отправляет ввод из WSO2CEP в socket.io.

var io = require('socket.io').listen(server);
io.set('origins', '*:*');

var WebSocketServer = require('ws').Server, 
   wss = new WebSocketServer({ port: 8087 })

//wss sending every message that it received to the socket.io
wss.on('connection', function connection(ws) {
  console.log('a WSO2CEP-PUBLISHER is connected');
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    io.emit('input-message', JSON.parse(message));
  });
});

обратите внимание, что данные, поступающие от издателя событий, имеют строковый формат, поэтому, если необходимо отправить их как объект JSON, используйте функцию JSON.parse().

person faruk    schedule 13.10.2015