`我正在尝试使用C#通过WebSocket连接发送JSON消息。我试图发送的消息是一个序列化的对象,需要嵌套在JSON数组中。
我的消息的类结构是:
public class BulkSubscribeMessage
{
[JsonProperty("_event")]
public string Event { get; set; }
[JsonProperty("tzID")]
public int TimeZoneId { get; set; }
public string Message { get; set; }
}
我已经序列化了一个BulkSubscribeMessage示例,并尝试将其嵌套在JSON数组中以通过WebSocket发送。我正在使用JsonConvert.SerializeObject来实现这一点。代码如下:
public async Task Subscribe(List<EconomicEvent> events)
{
StringBuilder sb = new StringBuilder();
sb.Append("pid-eu-177:%%pid-eu-172:%%pid-eu-8826:%%pid-eu-1175153:%%pid-eu-169:%%pid-eu-8827:%%pid-eu-956731:%%");
foreach (var eEvent in events)
{
sb.Append($"event-eu-{eEvent.Id}:%%");
}
// Removing the last two '%%'
if (sb.Length > 2) sb.Length -= 2;
BulkSubscribeMessage message = new BulkSubscribeMessage()
{
Event = "bulk-subscribe",
TimeZoneId = 16,
Message = sb.ToString()
};
// Create a list with one element: the serialized message
var messageList = new List<string>
{
JsonConvert.SerializeObject(message)
};
// Serialize the list of messages
string jsonString = JsonConvert.SerializeObject(messageList);
var buffer = Encoding.UTF8.GetBytes(jsonString);
await _client.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);
}
当我发送此消息时,我没有从服务器获得响应。当我在Chrome开发者控制台中检查WebSocket流量时,预期的消息格式为:
[
"{\"_event\":\"bulk-subscribe\",\"tzID\":16,\"message\":\"pid-eu-177:%%pid-eu-172:%%pid-eu-8826:%%pid-eu-1175153:%%pid-eu-169:%%pid-eu-8827:%%pid-eu-956731:%%event-eu-1:%%event-eu-2:...\"}"
]
然而,当我在代码中打印出jsonString时,格式看起来是正确的,但我没有从服务器获得任何响应。
如何通过WebSocket连接正确发送此JSON消息?我的序列化或WebSocket消息发送过程是否存在任何问题?我正在使用System.NET.WebSockets.ClientWebSocket进行WebSocket连接。
WebSocket URL:wss:streaming.forexpros.com/echo/321/dgwckgeo/websocket
我尝试在数组中序列化我的命令,旨在获得与Web浏览器客户端发送的正确命令相同的格式,但没有成功。我还是没能找到引号。
1条答案
按热度按时间qnakjoqk1#
您正在序列化两次。试图取代
与