具有RESTful API的Socket.io

我在Node.js创build了一个RESTful API,并且我希望在通过POST请求在数据库中创build消息后立即更新客户端应用程序。 所以我决定使用Socket.io

这是我的server.js代码:

 import http from "http"; import https from "https"; http.globalAgent.maxSockets = 1024; https.globalAgent.maxSockets = 1024; let app = require("express")(); let server = http.Server(app); let io = require('./lib/sockets').listen(server) //setup Database let Database = require("./util/Database").init() import { version } from "../config/version.json"; app.disable("x-powered-by"); import bodyParser from "body-parser"; app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); import routes from "./app/routes"; routes(app); server.listen(ENV.NODE_PORT); console.log( "server pid %s listening on port %s in %s mode", process.pid, ENV.NODE_PORT, ENV.NODE_ENV ); 

这是我的./ib/sockets文件:

 module.exports.listen = function(app){ let io = require('socket.io').listen(app); io.on('connection', function (socket) { socket.on('newMessage', function(messageData) { socket.emit('addMessage', messageData); }) }); return io } 

这是我的./app/routes文件:

 module.exports = function(app) { //API messages app.post('/api/messages/', require('./api/messages/create')); app.get('/api/messages/', require('./api/messages/index')); } 

这里是我的./app/api/messages/create文件的一部分:

 module.exports = function(req, res) { let token = req.headers['bearer-authorization']; let tokenSecret = ENV.API_SECRET; let decodedToken = jwt.verify(token, tokenSecret); let userId = decodedToken.userId; let messageType = req.body.messageType; let messageText = req.body.messageText; let targetGroupIds = req.body.targetGroupIds let targetCommitteeIds = req.body.targetCommitteeIds let insertMessageId; createMessage(userId, messageType, messageText) .then(createMessageResult => { insertMessageId = createMessageResult.insertId; linkMessageToGroupsAndCommittees(insertMessageId, targetGroupIds, targetCommitteeIds); }) .then(linkMessageToGroupsAndCommitteesResult => getNewMessage(insertMessageId)) .then(formatJSON) .then(send.success(res)) .catch(send.failure(res)); }; 

现在我的问题是,我怎样才能使它创build一个新的消息时,我可以在我的./app/api/messages/create文件中调用像socket.emit('addMessage', {messageAdded: true})