Ruby on rails 是否可以通过在节点上运行的套接字从Rails发布?
假设我使用node.js运行服务器,并将Socket.io连接到它。 现在我可以从它身上发射,假设我的前端应用程序可以与它对话Ruby on rails 是否可以通过在节点上运行的套接字从Rails发布?,ruby-on-rails,node.js,websocket,Ruby On Rails,Node.js,Websocket,假设我使用node.js运行服务器,并将Socket.io连接到它。 现在我可以从它身上发射,假设我的前端应用程序可以与它对话 我可以使用Rails通过使用我与node.js一起运行的套接字服务器向同一个前端应用程序发射吗?您将无法直接从Rails向同一个套接字发射 您可以做的是在rails和node.js之间设置进程间通信(IPC),当从rails接收到消息时,将该消息发送到前端 下面是一个使用unix套接字的示例,它要求rails&node.js应用程序在同一台机器上运行 const net
我可以使用Rails通过使用我与node.js一起运行的套接字服务器向同一个前端应用程序发射吗?您将无法直接从Rails向同一个套接字发射 您可以做的是在rails和node.js之间设置进程间通信(IPC),当从rails接收到消息时,将该消息发送到前端 下面是一个使用unix套接字的示例,它要求rails&node.js应用程序在同一台机器上运行
const net = require('net');
const server = require('http').createServer();
const io = require('socket.io')(server);
server.listen(3000); // Socket.io server
const socketName = '/tmp/ipc.sock';
const unix = net.createServer(connection => {
connection.on('data', data => {
// data may be a JSON with a room name & message
// If data is big enough, you may need to buffer data
// and emit on `end`
io.emit('some-event', data.toString()); // Emit data
// connection.write('something'); if you want to send data back to rails
connection.end();
});
});
unix.listen(socketName, () => {
console.log(`Socket started at ${socketName}`);
});
我不知道任何ruby,但现在您需要编写到/tmp/ipc.sock
它应该是这样的(再说一遍,我不认识ruby)
Unix套接字是处理IPC的多种方法之一,您可以使用Redis
、RabbitMQ
或任何您喜欢或喜欢的方法
require 'socket'
socket = UNIXSocket.new("/tmp/ipc.sock")
socket.puts('some data')
# or maybe socket.write('some data')