我们可以在PUBNUB中重新发布消息吗?

时间:2015-07-16 11:11:16

标签: javascript python json pubnub

我有一种情况,我可以从python中获取数据,所以我只能通过python发布。我需要可视化这些数据,因此我需要通过JavaScript订阅该频道。我的可视化libaray C3.js只将数据采用以下格式:

message: {
      columns: [
        ['x', volume],
        ['y', timetamp]
      ]
    }

在python中获取这样的数据对我来说很难。更简单的解决方案是通过JavaScript订阅并再次将数据重新发布为我想要的格式。我的问题是,是否有可能在PUBNUB中这样做,如果是这样我是否需要将数据发布到另一个频道或同一频道可以吗?

我的python代码是:

for each in data:
    y = each.counter_volume
    x = each.timestamp
    pubnub.publish(channel='orbit_channel', message=y)

我想要的输出是

    message: {
             "columns": [
   ["x", "2015-07-06T13:26:19", "2015-07-06T13:26:19","2015-07-06T13:26:19"],
   ["y", 5000.0, 5000.0, 5000.0]
]
}

1 个答案:

答案 0 :(得分:3)

  

在python中获取这样的数据对我来说很难。

这种格式是JSON,在Python中可以将数据序列化为非常简单,试试json模块:

import json
from time import gmtime, strftime

now = str(strftime("%Y-%m-%dT%H:%M:%S", gmtime()))
n = 5000.0

message = {"columns": [["x", now, now, now], ["y", n, n, n]]}
print "message: " + json.dumps(message, indent=4, separators=(',', ': '))

输出:

message: {
    "columns": [
        [
            "x",
            "2015-07-16T12:56:47",
            "2015-07-16T12:56:47",
            "2015-07-16T12:56:47"
        ],
        [
            "y",
            5000.0,
            5000.0,
            5000.0
        ]
    ]
}

也许以预期的方式提供这样的数据更容易在JS文件中使用?