我在official forum上问了这个问题,但我想我没有足够的代表可以认真对待:O
我正在免费使用Unity3D。
有人使用https://www.assetstore.unity3d.com/en/#!/content/21721成功吗?这个插件实际上最接近工作(我也试过this和this,但它们对我不起作用。)
我联系了作者,但还没有得到答复,所以想知道是否有人做了这个工作?
(编辑:我想指出,我不介意购买其他插件,如果您已经使用它并发现通过SocketIO与Node.js服务器通信很容易/有用 - 所以请推荐)
具体来说,这是我的问题: 我无法找到一种方法从Node.js向Unity发送JSON数据,因为它一直出错。
我尝试了很多方法,这就是其中之一:
io.on('connection', function(socket){
console.log('a user connected');
var data ='{"email":"some@email.com","pass":"1234"}';
var dataJson = JSON.stringify(data);
console.dir(dataJson);
socket.emit('newResults', dataJson);
console.log('server emited newResults');
socket.on('fromClient', function(data){
console.log("got msg from client");
console.dir(data);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
在Unity3D中,我使用以下函数来拦截它:
public void HandleNewResults(SocketIOEvent e){
Debug.Log(string.Format("[name: {0}, data: {1}]", e.name, e.data));
Debug.Log (new JSONObject (e.data));
}
但此时崩溃(它捕获错误信号)(打开调试时)此消息:
SocketComm:TestError(SocketIOEvent) (at Assets/_Scripts/SocketComm.cs:58)
SocketIO.SocketIOComponent:EmitEvent(SocketIOEvent) (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:400)
SocketIO.SocketIOComponent:EmitEvent(String) (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:392)
SocketIO.SocketIOComponent:OnError(Object, ErrorEventArgs) (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:382)
WebSocketSharp.Ext:Emit(EventHandler`1, Object, ErrorEventArgs) (at Assets/SocketIO/WebsocketSharp/Ext.cs:992)
WebSocketSharp.WebSocket:error(String) (at Assets/SocketIO/WebsocketSharp/WebSocket.cs:1011)
WebSocketSharp.WebSocket:Send(String) (at Assets/SocketIO/WebsocketSharp/WebSocket.cs:1912)
SocketIO.SocketIOComponent:EmitPacket(Packet) (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:309)
SocketIO.SocketIOComponent:EmitClose() (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:299)
SocketIO.SocketIOComponent:Close() (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:184)
SocketIO.SocketIOComponent:OnApplicationQuit() (at Assets/SocketIO/Scripts/SocketIO/SocketIOComponent.cs:164)
请您详细说明如何解决这个问题?
答案 0 :(得分:1)
我免费使用Unity3D。
但是SocketIO需要Unity Pro。如果要使用本机.NET套接字。
Unity Pro是使用.NET套接字构建所必需的。你可以 如果您不想使用本机套接字,请使用替换软件包。
您可以使用Good ol' Sockets。它可用于套接字。
答案 1 :(得分:0)
我使用了这样的代码:
socket.emit('event_name', {"email":"some@email.com","pass":"1234"});
我不知道是不是。统一的功能是:
public void TestBoop (SocketIOEvent e)
{
Debug.Log ("[SocketIO] Boop received: " + e.name + "--" + e.data);
);
}
输出是:
[SocketIO] Boop received: boop--{"email":"some@email.com","pass":"1234"}
也许它确实不对,但结果至少是统一的
答案 2 :(得分:0)
进行以下更改:
io.on('connection', function(socket){
console.log('a user connected');
var data ='{"email":"some@email.com","pass":"1234"}';
var dataJson = JSON.stringify(data);
console.dir(dataJson);
console.log('server emited newResults');
socket.on('beep', function(){
socket.emit('boop', {'boop': dataJson});
console.log("got msg from client");
console.dir(data);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
这是可行的。