Unity socket.on 无法接收

问题描述 投票:0回答:1

首先感谢您的帮助。我有一个 Unity 项目试图通过套接字发送网格。如果我在相同的 Unity 可执行文件上运行,它可以工作,我可以从相同的端口 8080 发出和接收,但对于单独的可执行文件,似乎 socket.On 没有接收。

这是我的server.js:

const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http, {
    maxHttpBufferSize: 10e6 // Aumenta el límite a 10 MB
});

http.listen(8080, () => {
    console.log('Server listening on port 8080');
});

io.on('connection', (socket) => {
    console.log('a user connected');

    socket.on('mesh', (data) => {
        console.log('Message from client', data);
        socket.emit('mesh', data); // Reenvía los mismos datos recibidos al cliente
    });

    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
});

我的socketIO客户端:

public class SocketIO_Client : MonoBehaviour
{
    public SocketIOUnity socket;
    public string serverUrlLink = "http://localhost:8080";

    [Header ("JSON")]
    public string jsonReceived;
    public string textureReceived;

    void Start()
    {
        var uri = new Uri(serverUrlLink);
        socket = new SocketIOUnity(uri);

        socket.OnConnected += (sender, e) =>
        {
            Debug.Log("socket.OnConnected");
        };

        // Listen
        socket.On("mesh", response =>
        {
            Debug.Log("Event : " + response.ToString());
            //Debug.Log(response.GetValue<string>());

            // jsonReceived = response.ToString();

        });

        socket.Connect();
    }

    public void SentMesh(string mesh)
    {
        // save file
        using (StreamWriter sw = File.CreateText(Application.dataPath + "/MeshLog_json_compressed_sent.txt"))
        {
            sw.WriteLine(mesh);
            Debug.Log("MeshLog.txt saved : " + Application.dataPath + "/MeshLog_json_compressed_sent.txt");
        }

        socket.EmitAsync("mesh", mesh);
        Debug.Log("Emited Mesh");
    }

    public void SentTexture(string texture)
    {
        socket.EmitAsync("texture", texture);
        Debug.Log("Emited Texture");
    }

    void OnDestroy()
    {
        socket.Dispose();
    }
}
unity-game-engine socket.io
1个回答
0
投票

解决了。换线了

socket.emit('mesh', data); 

致:

io.emit('mesh', data); 

所有客户端都会收到数据。感谢您的帮助!!

© www.soinside.com 2019 - 2024. All rights reserved.