71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
'use strict'
|
|
|
|
const express = require('express')
|
|
const app = express()
|
|
const http = require('http').createServer(app)
|
|
const io = require('socket.io')(http)
|
|
const cors = require('cors')
|
|
const port = 3030
|
|
const env = process.env.NODE_ENV || 'dev'
|
|
const bodyparser = require('body-parser')
|
|
const path = require('path')
|
|
const apiRoutes = require('./server/api.js')
|
|
const config = require('./config/config.json')
|
|
var Twitter = require('twitter')
|
|
|
|
let streamClient = new Twitter({
|
|
consumer_key: config.consumer_key,
|
|
consumer_secret: config.consumer_secret,
|
|
access_token_key: config.access_token_key,
|
|
access_token_secret: config.access_token_secret
|
|
})
|
|
|
|
// Bodyparser
|
|
app.use(bodyparser.urlencoded({ extended: true }))
|
|
app.use(bodyparser.json())
|
|
|
|
// Cors
|
|
app.use(cors())
|
|
|
|
// Routing
|
|
app.use('/api', apiRoutes)
|
|
|
|
// Socket
|
|
var hillary = io.of('hillary').on('connection', (socket) => {
|
|
console.log('User connected to Hillary')
|
|
|
|
let stream1 = streamClient.stream('statuses/filter', {track: 'Hillary%20Clinton'})
|
|
|
|
stream1.on('data', function(tweet) {
|
|
hillary.emit('tweet', tweet)
|
|
})
|
|
stream1.on('error', function(error) {
|
|
console.log(error)
|
|
})
|
|
|
|
socket.on('disconnect', () => {
|
|
stream1.destroy()
|
|
console.log('User disconnected')
|
|
})
|
|
})
|
|
|
|
var trump= io.of('trump').on('connection', (socket) => {
|
|
console.log('User connected to Trump')
|
|
|
|
let stream1 = streamClient.stream('statuses/filter', {track: 'Donald%20Trump'})
|
|
|
|
stream1.on('data', function(tweet) {
|
|
trump.emit('tweet', tweet)
|
|
})
|
|
stream1.on('error', function(error) {
|
|
console.log(error)
|
|
})
|
|
|
|
socket.on('disconnect', () => {
|
|
stream1.destroy()
|
|
console.log('User disconnected')
|
|
})
|
|
})
|
|
|
|
http.listen(port, () => console.log(`Server listening on port ${port}`))
|
|
|