netty-socket-io中的自定义请求/响应格式

时间:2015-03-27 15:04:52

标签: java json websocket socket.io netty

当我发送请求时(Google Chrome控制台):

42/v1/user,["currentPerson",{"transactionId":"53445t-53454-534543-53453435"}]

其中53445t-53454-534543-53453435 - 是唯一的transactionId,我自动将其包含在请求和每个响应中。

响应类似于

42/v1/user,["currentPerson","53445t-53454-534543-53453435",{"id":5,"firstName":"Ivan"}]

其中/v1/user - 带版本控制的命名空间;

1)我不想要42.并且不希望阵列在顶层 2)我只想要这样的回应

{
    "transactionId": "53445t-53454-534543-53453435",
    "namespace": "/v1/user",
    "event": "currentPerson",
    "person": {
        "id": 5,
        "firstName": "Ivan"
    }
}

3)这样的请求

{
    "transactionId": "53445t-53454-534543-53453435",
    "namespace": "/v1/user",
    "event": "currentPerson"
}

现在我使用socket-io js客户端,但仅用于测试目的,服务将与使用某些C ++库一起使用,因此我不需要使用socket.io样式格式。

有可能吗?我可以使用哪些方法?

我找到了addJsonObjectListener方法和sendJsonObject,但它们已在1.7.0中删除了,无论如何我不想传递@class指令,对我来说似乎很奇怪让客户了解服务器类层次结构。我只想在客户端上定义一些对象并在服务器上手动解析,然后将手动形成的json传递给客户端。

P.S。:顺便说一句Configuration.jsonTypeFieldName现在不可用,所以@class现在是唯一的名称选项。

netty-socket-io 1.7.7

1 个答案:

答案 0 :(得分:0)

我想在String中转换Json响应并将其作为String发送。

String json = convertInString(json);
buf = Unpooled.copiedBuffer(json, CharsetUtil.UTF_8);

ctx.write(a);