2017-08-12 52 views
0

我正在处理我的第一个套接字项目上的服务器端。该团队选择了socket.io。有关socket.io确认有效负载的最佳做法吗?

它提供的功能火的确认/回调回到那个正在与它的插座。

socket.on('anEvent', (payload, callback) => { 
    doSomethingWith(payload); 

    callback(true); 
}); 

我喜欢一致性,所以我想送回来一致形状的物体。例如:

socket.on('anEvent', (payload, callback) => { 
    const responseData = doSomethingWith(payload); 

    callback({ 
     'status': 200, 
     'data': responseData 
    }); 
}); 

socket.on('anEvent', (payload, callback) => { 
    try { 
     const responseData = doSomethingWith(payload); 

     if (!responseData) { 
      callback({ 
       'status': 404 
      }); 
     } 

     callback({ 
      'status': 200, 
      'data': responseData 
     }); 

    } catch(error) { 
     callback({ 
      'status': 500, 
      'error': error.toString() 
     }); 
    } 
}); 

或相似。我不会提交这样的代码。别担心:d

不过,我一直在阅读socket server specs和状态代码没有多大意义了我。

是很疯狂的插座确认使用HTTP响应代码或有这方面没有最佳做法?

+1

我实在看不出有任何理由使用HTTP响应代码为socket.io确认,除非你进行代理的底层操作,实际上HTTP是,你只想对这些状态前进。如果这是您自己的操作,那么只需创建您自己的状态代码,这对您正在做的事情有意义。在大多数情况下,我会认为通常的'err'值是'null',因为没有错误,并且在出现错误时包含错误代码会是最简单并且很好理解的策略。 – jfriend00

+0

欣赏输入。重用地位的想法是因为其他开发者已经熟悉他们及其意义。但是我认为通过重用http代码可能会导致混淆。我想这个问题的答案是:做你认为最好的,但一致的。 – plumpNation

回答

1

在套接字确认中使用http响应代码还是没有关于此的最佳实践是疯狂的?

我不会说这是疯狂的,但我真的没有看到任何理由使用http响应代码socket.io确认,除非你代理的实际上是HTTP的基础操作,你想只是转发该状态。

如果这是你自己的操作,那么就创建自己的状态码,对你在做什么,就像如果你写的返回错误代码共享的功能,你会做什么意义。在大多数情况下,我会认为通常约定的err值是无错的,并且在出现错误时包含错误代码或对象,这将是最简单的方法,也是一种理解良好的策略。

所以,除非你有一个潜在的http操作,你试图传递的状态,我认为重用http状态只会混淆人,再加上我相信你会发现很多重用,所以你会重新调整一些不是特别好的匹配的东西,可能会让人困惑。

我想说最好的做法是定义你自己有意义的错误返回值并记录它们。请记住,你可以使用字符串而不是数字,它们通常更具描述性。你也可以返回一个包含代码和字符串的错误对象(自我描述)。