Node.js Post请求上的触发器套接字
试图在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
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");
});
使用该解决方案,您可以向所有连接的套接字发射,而不仅仅是一个:)同意..!!:)。