向所有客户端发送事件表单服务器

时间:2020-04-25 11:30:44

标签: node.js express socket.io

我在服务器端拥有这个非常基本的脚本app.js

const {app, apiEvents}    = require('./server.js');
const http   = require('http');
const server = require('http').createServer(app).listen(8080);
const io     = require('socket.io').listen(server); 
function connected(socket) { 
    console.log('a user connected');  
}
apiEvents.on('db-event', (data) => {
    console.log(`Received event:%s`,data);
    io.emit ('update', msg); 
}); 

io.sockets.on('connection',(socket) => {connected(socket);});

这是客户端:

// Test client
const io = require('socket.io-client');

const socket = io.connect('http://localhost:8080',(socket) => {

});

socket.on('connect', function(){        
    socket.on ('update', function (msg) {
        console.log (msg);
    });

});

server.js只是Express中基本路由的包装。当我连接到localhost:8080:/api时,将触发数据库事件。

const createError = require('http-errors');
const express     = require('express');
const path        = require('path');

//const logger = require('morgan');
const { apiRouter, apiEvents} = require('./routes/api');

const app = express(); 

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use('/api', apiRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
}); 
module.exports = {app, apiEvents};

这是routes/api.js

const express = require('express');
const EventEmitter = require('events').EventEmitter;
const apiEvents = new EventEmitter();
const apiRouter = express.Router();

apiRouter.get('/', function(req, res, next) {
    console.log("Received query%s",req.query);
    res.sendStatus(200);
    apiEvents.emit('db-event',req.query);
  });

module.exports = {apiRouter, apiEvents};

当我赚curl http://localhost:8080/api\?operation=pippo时 我在服务器上看到了日志:

Received query { operation:'pippo' }
Received event:{ operation: 'message', user: 'pippo' }

但是在客户端什么也没有写出来。为什么?

0 个答案:

没有答案