Node.js 在http get请求上发出socket.io消息(在Express.js中)
在我的socket.io/express应用程序中,我希望能够向localhost:3000/send发出GET请求,并让它向所有打开的连接发送消息。但是,此代码似乎不起作用:Node.js 在http get请求上发出socket.io消息(在Express.js中),node.js,socket.io,Node.js,Socket.io,在我的socket.io/express应用程序中,我希望能够向localhost:3000/send发出GET请求,并让它向所有打开的连接发送消息。但是,此代码似乎不起作用: var LISTENING_PORT = 1234; var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); //Example users app.get
var LISTENING_PORT = 1234;
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
//Example users
app.get('/messages', function(req, res){
res.sendFile(__dirname + '/messages.html');
});
//Basket Reservation Namespace
var basket_reservation = io
.on('connection', function(socket){
socket.on('message', function(message){
console.log('Received connection from user: ' + message);
socket.emit('message', 'Connection started.');
});
app.get('/send', function(req, res){
console.log('sending message to all');
socket.emit('message', 'Message from GET /send');
res.send('Message sent.');
});
});
http.listen(LISTENING_PORT, function(){
console.log('listening on *:' + LISTENING_PORT);
});
特别是行socket.emit('message','messagefrom GET/send');不起作用。上面和下面的线路都会被呼叫
以下是客户:
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript">
var socket = io('http://localhost:1234/');
socket.emit('message', 'hello');
socket.on('message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
<h1>User #1</h1>
<ul id="messages"></ul>
变量套接字=io('http://localhost:1234/');
emit('message','hello');
socket.on('message',函数(msg){
$(“#消息”).append($(“”).text(msg));
});
用户#1
我认为您的代码无法响应/send
路由,因为您正在io.on('connection')上异步声明它。
我建议在('connection')上的io.on之外声明此项-我还没有运行我的代码-因此不确定它是否会运行:
//Basket Reservation Namespace
var basket_reservation = io
.on('connection', function(socket){
socket.on('message', function(message){
console.log('Received connection from user: ' + message);
socket.emit('message', 'Connection started.');
});
// Helper to send message (it uses closure to keep a reference to the io connetion - which is stored in basket_reservation in your code)
var sendMessage = function (msg) {
if (basket_reservation && basket_reservation.connected) {
console.log('sending message to all');
basket_reservation.emit('message', 'Message from GET /send');
}
};
// Broadcast message
app.get('/send', function(req, res){
sendMessage(req.body.data);
res.send('Message sent.');
});
我认为您的代码无法响应/send
路由,因为您正在io.on('connection')
上异步声明它
我建议在('connection')上的io.on之外声明此项-我还没有运行我的代码-因此不确定它是否会运行:
//Basket Reservation Namespace
var basket_reservation = io
.on('connection', function(socket){
socket.on('message', function(message){
console.log('Received connection from user: ' + message);
socket.emit('message', 'Connection started.');
});
// Helper to send message (it uses closure to keep a reference to the io connetion - which is stored in basket_reservation in your code)
var sendMessage = function (msg) {
if (basket_reservation && basket_reservation.connected) {
console.log('sending message to all');
basket_reservation.emit('message', 'Message from GET /send');
}
};
// Broadcast message
app.get('/send', function(req, res){
sendMessage(req.body.data);
res.send('Message sent.');
});