首先感谢您的帮助。我有一个 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();
}
}
解决了。换线了
socket.emit('mesh', data);
致:
io.emit('mesh', data);
所有客户端都会收到数据。感谢您的帮助!!