使用socket.io从节点服务器接收消息到vue-native / react-native客户端

时间:2019-04-10 11:47:01

标签: node.js react-native vue.js socket.io vue-native

我有一个设置,其中我将带有​​socket.io的vue-native客户端应用程序(react-native的vue.js包装器)发送消息到node.js服务器。从node.js服务器Im将我的OSC消息转发到接收OSC消息的“另一个程序”。

这很好,但是现在我想反过来。

我已使用下面的代码从“另一个应用程序”成功从我的node.js服务器接收了OSC消息,但是我无法弄清楚如何将其转发到我的vue-native应用程序。

VUE-NATIVE(基本数据):

<script>
import io from "socket.io-client";

export default {
  components: {
    io
  },

  data: function() {
    return {
      object: {
        oscAdress: "TheOscAdress",
        msg: ""
      },
      adress: "http://192.168.43.54:3000"
    };
  },

  mounted() {
    this.socket = io(this.adress);
    console.log("started");
  },

  methods: {
    sendMessage: function() {
      this.socket.emit("chat message", this.object);
    },

NODE.JS

const express = require("express");
const app = express();
const server = require("http").createServer(app);
const io = require("socket.io").listen(server);
const port = 3000;

// OSC
const { Client } = require('node-osc');
this.client = new Client('127.0.0.1', 3333);

const { Server } = require('node-osc/lib');
var oscServer = new Server(10000, '127.0.0.1');

// SOCKET IO
io.on("connection", socket => {
  console.log("a user connected :D");

  // RECEIVING FROM APP WITH SOCKET.IO
  socket.on("chat message", msg => {
    console.log(msg.msg);

    // SENDING TO OSC
    this.client.send('/'+msg.oscAdress, parseInt(msg.msg, 10));
  });
});

// RECEIVING FROM OSC
oscServer.on('message', function (msg) {
  console.log(msg);
});

server.listen(port, () => console.log("server running on port:" + port));

关于如何将OSC消息转发到我的应用程序的任何想法?

一种方法是在我的node.js中使用此方法,但是我不知道如何在vue中接收它,所以我不确定它是否有效:

// RECEIVING FROM OSC
oscServer.on('message', function (msg) {
  console.log(msg);
  // SENDING TO VUE-NATIVE??
  io.emit("chat message to app", msg);
});

更新 我通过在挂载中添加以下接收功能来接收vue中的消息 但这不能正常工作,因为我想要一直更新Vue的东西。不仅在启动时。

  mounted() {
    this.socket = io(this.adress);
    console.log("started");

    // receive message from server
    this.socket.on("chat message to app", (data) => {
      console.log( data); 
    })
  },

此刻,我的node.js应用程序一直在侦听OSC消息,并且一直在更新。 vue-native应用程序也是如此。

当它实际上接收到某种东西或某些OSC值实际上正在变化时,是否只能对其进行更新?

1 个答案:

答案 0 :(得分:0)

我几乎解决了自己的问题。请参阅上面的更新。问题是虽然我使用已挂载的功能。我想要一直更新Vue的东西。不仅在启动时。

此刻我的node.js应用程序一直在侦听OSC消息并一直在更新,是否只有在它实际接收到某些东西或某些OSC值实际上正在变化时才对其进行更新?