使用websockets从服务器流式传输事件

时间:2016-10-05 23:35:04

标签: apache-spark websocket spark-streaming apache-flink flink-streaming

我希望使用来自服务器的Web套接字来传输事件,该服务器的地址以:

开头

WSS://example.de/Outbound/OutboundInterface

我正在寻找可以使用Apache spark,Apache flink等技术从服务器流式传输事件的选项。

我不确定如何将事件流式传输到我的大学后端项目中。

任何指针都会有所帮助,说明如何继续处理问题陈述。

1 个答案:

答案 0 :(得分:1)

解决这个问题的一种方法是编写一个在websocket接口和标准TCP套接字(Apache Spark和Apache Flink都支持)之间桥接的小包装器。这是python中连接到维基百科websocket服务并打印出编辑流的示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# sudo pip install socketIO_client==0.5.6
# ./simple.py 2> /dev/null | nc -lk 9999

import socketIO_client
import json

class WikiNamespace(socketIO_client.BaseNamespace):
    def on_change(self, change):
        print(json.dumps(change))

    def on_connect(self):
        self.emit('subscribe', 'en.wikipedia.org')

socketIO = socketIO_client.SocketIO('stream.wikimedia.org', 80)
socketIO.define(WikiNamespace, '/rc')

while True:
    socketIO.wait(10)

然后您可以通过nc将其转换为Flink,etal可以连接到的套接字(这里我将错误重定向到/ dev / null - 您可能宁愿将它们放在文件中):

./simple.py 2> /dev/null | nc -lk 9999