Node.js 命中快速端点后在socket.io中发出

Node.js 命中快速端点后在socket.io中发出,node.js,express,socket.io,Node.js,Express,Socket.io,我不熟悉插座 我正在与使用socket.io的客户端一起运行express Web服务器 基本上,每当有人点击我的一个post请求时,我都会向我的客户机发送一个结果,表明post请求被点击。我想象它看起来像这样 节点服务器 const app = express(); app.post('/makeOrder', function(req, res){ // Do some database logic that pushes the order into my database

我不熟悉插座

我正在与使用socket.io的客户端一起运行express Web服务器

基本上,每当有人点击我的一个post请求时,我都会向我的客户机发送一个结果,表明post请求被点击。我想象它看起来像这样

节点服务器

const app = express();
app.post('/makeOrder', function(req, res){ 
   // Do some database logic that pushes the order into my database


   // This is where I'm stuck.
   // I want to notify the client that the order is placed.
   // Would it look something like this?
   io.in('kitchenSocket').emit('order-placed', 'An order has been placed!');


   // Last send something to finish the request
   res.send({test:"order placed"})
}
app.post('/makeOrder', function(req, res){ 
    // Do logic
    var javascriptObject = {};

    io.emit("someName", javascriptObject);
    res.send({test:"Some message"});
}
网络客户端

<script src="/socket.io.js"></script>
<script>
    // What I currently have
    var socket = io.connect('http://localhost:5554/kitchenSocket');
    socket.on('order-placed', function (data) {
        alert("an order has been placed:" + data)
    });
</script>
<script src="/socket.io.js"></script>
<script>
    this.socket = io('/', {transports: ['websocket']});
    socket.on('someName', function (data) {
        // Do client stuff
    });
</script>

//我现在拥有的
var socket=io.connect('http://localhost:5554/kitchenSocket');
socket.on('order-placed',函数(数据){
警报(“已下订单:+数据”)
});

如何让它在被命中的express端点上发出消息?

以下是一些代码,我必须执行一些非常类似的操作,您需要添加一些更改,但这是一个总体思路。主要区别在于我使用的是Redis服务器。让我知道这是否有帮助,或者您是否有后续问题

服务器端代码

 var io = require('socket.io').listen(app);
      var redis = require('socket.io-redis');
      io.adapter(redis({ host: config.redis, port:config.redisPort }));
      //sets allowed origions
      io.set("origins", "*:*");
      let sockectObj = [data to be sent]
      io.emit('notification', sockectObj);
前端代码

this.socket = io(CONFIG.socket, { query: [naming parameter] });

this.socket.on("notification", function (resObj) {
  //Action to be performed
}.bind(this));

为任何需要的人使用Express代码:

节点服务器

const app = express();
app.post('/makeOrder', function(req, res){ 
   // Do some database logic that pushes the order into my database


   // This is where I'm stuck.
   // I want to notify the client that the order is placed.
   // Would it look something like this?
   io.in('kitchenSocket').emit('order-placed', 'An order has been placed!');


   // Last send something to finish the request
   res.send({test:"order placed"})
}
app.post('/makeOrder', function(req, res){ 
    // Do logic
    var javascriptObject = {};

    io.emit("someName", javascriptObject);
    res.send({test:"Some message"});
}
客户端

<script src="/socket.io.js"></script>
<script>
    // What I currently have
    var socket = io.connect('http://localhost:5554/kitchenSocket');
    socket.on('order-placed', function (data) {
        alert("an order has been placed:" + data)
    });
</script>
<script src="/socket.io.js"></script>
<script>
    this.socket = io('/', {transports: ['websocket']});
    socket.on('someName', function (data) {
        // Do client stuff
    });
</script>

this.socket=io('/',{transports:['websocket']});
socket.on('someName',函数(数据){
//做客户的事情
});

您测试过这个吗?如果测试过,结果会是什么?我测试了一些逻辑上相似的东西,但不是这个确切的代码。我现在就去。目前,我什么都没有得到。没有错误,但我也没有看到
警报(“已下订单”)
。不过,我已经得到了一些打印在初始连接,所以我知道这至少是工作。谢谢!这足以帮助我配置它。我想最重要的是我把io.in(“kitchensocket”).emit改为仅io.emit。这个答案可以简化为只包含解决此问题所需的代码?那么,没有redis,情况会怎样?有什么不同吗?[set allow origins是一般思维中的一个很好的例子!]