$ websocat -E -t ws-l:127.0.0.1:8888 broadcast:mirror:
Instala websocat y ejecuta:
$ git clone git@github.com:esri-es/twitter-rt-service.git
$ cd twitter-rt-service && npm install
$ open https://developer.twitter.com/en/apps
$ touch config/twitter_credentials.json
$ echo '{\n "consumer_key": "YOUR_CONSUMER_KEY",\n "consumer_secret": "YOUR_CONSUMER_SECRET",\n "token": "YOUR_TOKEN",\n "token_secret": "YOUR_TOKEN_SECRET"\n}' >> ./config/twitter_credentials.json
$ node emitter.js "PP,PSOE,CIUDADANOS,PODEMOS,VOX"
Descarga, configura y ejecuta twitter-rt-service
(necesitarás tener instalado NodeJS)
$ ngrok http 9000
Instala ngrok y ejecuta:
$ git clone git@github.com:esri-es/arcgis_websocket_server.git
$ cd arcgis_websocket_server && git checkout develop && npm install
$ NGROK=<TU_ID>.ngrok.io node init.js "ws://localhost:8888" "4.11"
Descarga arcgis_websocket_server y ejecuta
$ npm install http-server -g
$ http-server -p 9090
Desde la carpeta de arcgis_websocket_server/example: lanzamos un servidor estático usando http-server.
Stream layer demo: http://localhost:9090/index.html
Charts demo: http://localhost:9090/app.html
Web map demo: https://arcgis.com/home/webmap/viewer.html
$ NGROK=<TU_ID>.ngrok.io node --inspect-brk init.js "ws://localhost:8888" "4.11"
$ node --inspect-brk emitter.js "PP,PSOE,CIUDADANOS,PODEMOS,VOX"
Abrir interfaz de debugging: chrome://inspect
Procesamiento por tweet: twitter-rt-service | PDF
Estructura de ficheros del proyecto: twitter-rt-service
- config
- elections.js // Parámetros de configuración
- data
- db.json // Caché ubicaciones encontradas
- notFoundLocations.json // Caché de ubicaciones no encontradas
- spain-boundaries.json // Límites territoriales de España
- spanish-ccaa-boundaries.json // Límites por CCAA
- lib
- helpers
- elections.js (~40) // Método: mapping_parties
- ws_client_stream.js (~10) // Conexión para enviar el tweet al ws
- batch_geocoder.js (~40) // Método: tryGeocoders
- elections_stream.js (~180) // Flujo principal de la app
- twitter_stream.js (~40) // Conexión a la Stream API de twitter
- src
- external_geocoders.js (~140) // Métodos: arcgis, osm, arcgisGlobal, etc
- geocoder_utils.js (~80) // Método: normalize (niveles administrativos)
- geocoders.js (~60) // Método: find (para geocodificar)
- locationUtils.js (~70) // Métodos: randomize y findCCAA
emmiter.js (~10) // Punto de entrada de la app
Funcionamiento: arcgis_websocket_server | PDF
Estructura de ficheros del proyecto: arcgis_websocket_server
- example
- index.html (~220) // Página HTML para probar el stream service
- streamserver
- pipelines
- custom.js (~60) // Método: adaptPayload (proyectar WGS84 a Web Mercator)
- default.js (~30) // Filtros genéricos + llamada a adaptPayload
- utils
- esri_types.js (~60) // Método: convertToEsriFields (inferir tipos del payload)
- filter_utils.js (~115) // Método: evaluateQuery (adaptar filtro a regex)
- streamserver_simple.js (~210) // Flujo principal de la aplicación
- templates
- service.json (~50) // Esquema de respuesta de un StreamLayer de ArcGIS
- utils
- websocket_utils.js (~45) // Comprueba la conexión al cliente de websocket
init.js (~30) // Punto de entrada de la app
bit.ly/geotweets19