Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Post请求上的触发器套接字_Node.js_Sockets_Socket.io - Fatal编程技术网

Node.js Post请求上的触发器套接字

Node.js Post请求上的触发器套接字,node.js,sockets,socket.io,Node.js,Sockets,Socket.io,试图在POST请求中发出消息,收到一个错误,提示无法读取未定义的属性emit app.post('/webhook/orders/updated', function(req, res, next) { io.socket.emit('order', "Order Id " + req.body.data.id + " : Updated"); }); 在index.js中,我有以下代码: var express = require('express'); var app = exp

试图在POST请求中发出消息,收到一个错误,提示无法读取未定义的属性
emit

app.post('/webhook/orders/updated', function(req, res, next) {
    io.socket.emit('order', "Order Id " + req.body.data.id + " : Updated");
});
在index.js中,我有以下代码:

var express  = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
   $(function () {
      var socket = io();
      socket.on('order', function(msg) {
         $('#status').append($('<li class="alert alert-info">').text(msg));
      });
   });
</script>
在UI上,我有以下代码:

var express  = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
   $(function () {
      var socket = io();
      socket.on('order', function(msg) {
         $('#status').append($('<li class="alert alert-info">').text(msg));
      });
   });
</script>

$(函数(){
var socket=io();
socket.on('order',函数(msg){
$('#status').append($('
  • ).text(msg)); }); });
  • 您必须选择要发射的套接字

    为此,我认为您需要在每个连接上向客户端传递套接字id,如下所示:

    服务器端

    var io = require('socket.io')(http);
    io.on('connection', function (socket) {
       socket.emit('connection:sid', socket.id);
    });
    
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
       $(function () {
          var socket = io();
          socket.on('connection:sid', function(socketId) {
             // Set socketId to your cookies, or global variable
          });
       });
    </script>
    
    客户端

    var io = require('socket.io')(http);
    io.on('connection', function (socket) {
       socket.emit('connection:sid', socket.id);
    });
    
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
       $(function () {
          var socket = io();
          socket.on('connection:sid', function(socketId) {
             // Set socketId to your cookies, or global variable
          });
       });
    </script>
    

    希望有帮助。

    替代解决方案。我将
    io.socket
    替换为
    io.sockets

    app.post('/webhook/orders/updated', function(req, res, next) {
        io.sockets.emit('order', "Order Id " + req.body.data.id + " : Updated");
    });
    

    使用该解决方案,您可以向所有连接的套接字发射,而不仅仅是一个:)同意..!!:)。