0

我想创建一个通过 Websocket 连接的事件发布者。当我尝试将它与我的简单套接字 io 服务器连接时,网址是

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

它没有收到流..

我已经为流设置了内联格式,如下所示:

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

2 回答 2

1

如果我正确理解你的问题,

  • 从 CEP 服务器发布事件时,您不会收到任何错误
  • 但是套接字 io 服务器也没有显示任何它接收到事件的迹象。

CEP 服务器未显示错误日志意味着:

  • CEP 服务器已成功连接到套接字 io 服务器。(如果连接断开,那么您应该会看到错误日志,CEP 将尝试重新连接)
  • 可能事件是由 Websocket 发布者发送到套接字 io 服务器的(或者 Websocket 发布者根本没有收到任何要发送到套接字 io 服务器的事件)
    • (当您发送事件时,如果 CEP 服务器无法解析该事件,那么您也应该会看到错误日志。)

以下几点可能有助于您解决问题:

  1. 在您的 websocket 发布者中启用跟踪(您可以参考此“事件跟踪器”文档)。然后发送一个事件并检查跟踪。这将允许您验证 Websocket 发布者是否收到了事件。
  2. 如果显示了发布者的跟踪,但在套接字 io 服务器上仍然没有收到任何事件,那么可能是在套接字 io 服务器上发生了一些错误,并且没有记录异常(可能已被吞没)。

希望这会有所帮助。

于 2015-10-10T19:28:18.453 回答
0

因为我不能直接连接到 socket.io,所以我创建了一个简单的 websocket 作为中间件,将来自 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() 函数。

于 2015-10-13T05:57:43.770 回答