我使用以下方法创建了聊天应用程序
- rails
- RabbitMQ
- nodejs(使用 amqplib/callback_api 和 socket.io)
我在服务器端有以下代码
var amqp = require('amqplib/callback_api');
var amqpConn = null;
var app = require('http').createServer()
var io = require('socket.io')(app);
var fs = require('fs');
io.on('connection', function (socket) {
socket.emit('news/1', msg.content.toString());
// socket.disconnect()
});
客户端
<%= javascript_include_tag "http://localhost:53597/socket.io/socket.io.js" %>
<script>
var socket = io('http://localhost:53597', {reconnect: true});
socket.on('connect', function () {
console.log('connected');
socket.on('news/1', function (msg) {
console.log('inside coming');
console.log(msg);
});
});
</script>
当我发送消息时,消息成功推送到队列并将消息发送到套接字。问题是仅刷新页面且未删除消息时我可以收到消息。
我不明白这里出了什么问题?
最佳答案
最终我解决了我的问题,问题是我在连接事件中放置了emit函数,这样我就可以在仅建立连接时获取数据,连接是在页面加载时建立的,这就是我仅在页面加载时获取数据的原因。
我有以下用于发出数据的代码
io.sockets.emit('news/1', msg.content.toString());
关于ruby-on-rails - Socket.io 客户端无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003655/