我在做:
function uploadFile(location,slides,name){
var data = {
slides: slides,
name : name
}
io.sockets.in('conversionRoom').emit('selectSlides',data);
另一方面它出现了:
{
"name": "selectSlides",
"args": [
{
"slides": [
"2",
"4"
]
}
]
}
我希望它是:
{
"name": "selectSlides",
"slides": [
"2",
"4"
]
}
这样它就可以适合我的架构。 导致“args”出现的原因是什么,以及如何让它消失?
我正在使用Socketio-4net
侦听C#中的emitProgram.socket.On("selectSlides", (fn2) =>
{
Program.toLog.Add("selectSlides hit");
var jString = fn2.Json.ToJsonString();
Program.toLog.Add(jString);
});
答案 0 :(得分:0)
如果您使用socket io,请不要更改它。你可以在没有任何库的情况下自己将原始数据写入套接字,但是你不会拥有socket io的所有优点。
我不知道C#库是如何工作的,但也许它并没有为你拉出论据。
为什么?
嗯,我很确定这只是套接字io使用的传输模式。您需要将args放在他们自己的对象中,以便它们不会干扰其他键。例如,如果您有一个名为setName
的活动期望name
?
{
"name": "setName",
"args": {
"name": "Bob"
}
}
鉴于这些信息,您想要构建的方式不起作用:
// wat?!
{
"name": "setName",
"name": "Bob"
}
因为事件的name
和数据密钥name
会发生冲突。
当你使用套接字io JS库时,他们会抽象这个,你将args传递给处理该事件的监听器。如果您只是听原始套接字,那么您将获得原始数据,并且必须自己完成。