Javascript 是什么原因导致了;args";:带Json的[…]数组?
我正在做:Javascript 是什么原因导致了;args";:带Json的[…]数组?,javascript,json,socket.io,Javascript,Json,Socket.io,我正在做: function uploadFile(location,slides,name){ var data = { slides: slides, name : name } io.sockets.in('conversionRoom').emit('selectSlides',data); 在另一端,结果是: { "name": "selectSlides", "args": [ { "slide
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#中的emit
Program.socket.On("selectSlides", (fn2) =>
{
Program.toLog.Add("selectSlides hit");
var jString = fn2.Json.ToJsonString();
Program.toLog.Add(jString);
});
不,如果您使用的是套接字io,则无法更改它。您可以自己在没有任何库的情况下将原始数据写入套接字,但这样您就不会拥有套接字io的所有优秀功能 我不知道C#library是如何工作的,但也许它并没有为你引出理由
为什么? 我很确定这就是socket io使用的传输模式。您需要将参数放在它们自己的对象中,以便它们不会干扰其他键。例如,如果有一个名为
setName
的事件需要一个name
,该怎么办
{
"name": "setName",
"args": {
"name": "Bob"
}
}
考虑到这些信息,您想要的结构方式将不起作用:
// wat?!
{
"name": "setName",
"name": "Bob"
}
因为事件的名称
和数据键名称
会冲突
当您使用socket io JS库时,它们会为您将参数传递给处理该事件的侦听器而对其进行抽象。如果您只是侦听原始套接字,那么您将获得原始数据,并且必须自己执行。侦听
emit()
的处理程序是什么样子的。因为我不认为你正确地使用了那个API。@AlexWayne我用这些信息编辑了我的问题