Sockets 关于socket.io确认的有效负载是否有最佳实践?

Sockets 关于socket.io确认的有效负载是否有最佳实践?,sockets,socket.io,Sockets,Socket.io,我正在服务器端进行我的第一个套接字项目。团队选择了socket.io 它提供了向与它对话的套接字发回确认/回调的功能 socket.on('anEvent', (payload, callback) => { doSomethingWith(payload); callback(true); }); 我喜欢一致性,所以我想发回形状一致的对象。例如: socket.on('anEvent', (payload, callback) => { const re

我正在服务器端进行我的第一个套接字项目。团队选择了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
    });
});

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

然而,我一直在阅读,状态代码对我来说没有多大意义

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

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

我不会说这很疯狂,但我不认为有任何理由在socket.io确认中使用http响应代码,除非您代理一个实际上是http的底层操作,并且只想在该状态下转发

如果这是您自己的操作,那么只需创建您自己的状态代码,这些代码对您正在执行的操作有意义,就像您编写的共享函数返回错误代码一样。在大多数情况下,我认为通常的约定是,当出现错误时,err值为null表示无错误,并包含错误代码或对象,这是最简单的方法,也是一种很好理解的策略

因此,除非有一个底层的http操作,您正试图从中传递状态,否则我认为重用http状态只会让人们感到困惑,而且我很怀疑您是否会发现有很多东西需要重用,因此您将重新调整某些不太匹配的东西的用途,并且可能会让人困惑


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

我真的看不出有任何理由使用http响应代码进行socket.io确认,除非您代理的底层操作实际上是http,并且只希望在这些状态下转发。如果这是您自己的操作,那么只需创建您自己的状态代码,对您正在做的事情有意义。在大多数情况下,我认为通常的
err
值惯例是
null
,表示无错误,并且在出现错误时包含错误代码,这是一种最简单且易于理解的策略。感谢您的输入。重用状态的想法是因为其他开发人员已经熟悉它们及其含义。然而,我确实认为,通过重用http代码,可能会在将来的某个时候造成混乱。我想这个问题的答案是:做你认为最好的事,但要始终如一。
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()
        });
    }
});