2017-12-22 18 views
0

、POST要求にメッセージを発するようにしようとindex.jsでは未定義トリガソケットPOSTリクエストに

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

のプロパティemitを読み取ることができませんというエラーを取得し、私は次のコードを持っている:

UI上で
var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

、私は次のコードを持って:あなたは、SOCを選択する必要が

<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> 

答えて

1

をケトンを放出する。

サーバー側

var io = require('socket.io')(http); 
io.on('connection', function (socket) { 
    socket.emit('connection:sid', socket.id); 
}); 

クライアント側

はそれをするために、私はあなたがこのようなクライアント側にソケット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> 

そして、あなたがしているGETリクエストまたはPOSTリクエストごとにsocketIdを送る必要があります。ヘッダーまたはパラメーターを持っています。 最後に、あなたはあなたのルート上にあなたの正しいソケットにアクセスすることができます。

app.post('/webhook/orders/updated', function(req, res, next) { 
    if (req.body.socketId) { 
     var socket = io.sockets.connected[req.body.socketId]; // Find socket by id 
     if (socket) { 
      socket.emit('order', "Order Id " + req.body.data.id + " : Updated"); 
     } 
     else { 
      // No socket found with socketId 
     } 
    } 
    else { 
     // No socketId received 
    } 
}); 

はそれが役に立てば幸い

ROUTE。

0

代替溶液。私はそのソリューションでio.sockets

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

io.socketを交換し、あなたはすべての接続されたソケットに放出し、そして1つだけでなく:) – Sparw

+0

は、合意されました..! :)。 –