Pusher 是否允许非 ASCII (JSON) 格式的传输负载?
Does Pusher allow a transport payload in non-ASCII (JSON) format?
我目前正在像这样在 .NET 中向 Pusher 发送消息:
var result = pusher.Trigger( "channel-1", "test_event", new { message = "hello world" } );
并像这样在 JavaScript 中接收它们:
var pusher = new Pusher('APP_KEY');
var channel = pusher.subscribe('channel-1');
channel.bind('test_event', function(data) {
// process
}
);
是否有可能以不同的(更小的)格式发送有效负载,例如 Protocol Buffers?
您不能发送二进制数据,因为您发送的数据在 POST
ed 到 Pusher 时用作 JSON 对象中的字符串字段或查询字符串参数。 HTTP API reference.
中对此进行了描述
您可以做的是使用 protobuf 将其编码为二进制,然后使用 base64 编码器将生成的二进制编码为字符串。
您将遇到的问题是 .NET 库。这会将您要发送的数据作为 object
,并在内部将其编码为 JSON。您必须直接 post 到 HTTP API,或者修改 .NET 库以公开采用 string
而不是 object
.[=15 的触发方法=]
我目前正在像这样在 .NET 中向 Pusher 发送消息:
var result = pusher.Trigger( "channel-1", "test_event", new { message = "hello world" } );
并像这样在 JavaScript 中接收它们:
var pusher = new Pusher('APP_KEY');
var channel = pusher.subscribe('channel-1');
channel.bind('test_event', function(data) {
// process
}
);
是否有可能以不同的(更小的)格式发送有效负载,例如 Protocol Buffers?
您不能发送二进制数据,因为您发送的数据在 POST
ed 到 Pusher 时用作 JSON 对象中的字符串字段或查询字符串参数。 HTTP API reference.
您可以做的是使用 protobuf 将其编码为二进制,然后使用 base64 编码器将生成的二进制编码为字符串。
您将遇到的问题是 .NET 库。这会将您要发送的数据作为 object
,并在内部将其编码为 JSON。您必须直接 post 到 HTTP API,或者修改 .NET 库以公开采用 string
而不是 object
.[=15 的触发方法=]