当前位置: 首页 > 面试题库 >

如何使用golang网络套接字解码多种消息类型?

濮阳原
2023-03-14
问题内容

我必须使用(相对)标准的围棋程序go.net/websocket库。我正在尝试从网页中接收和解码消息,这些消息对于每种消息类型都具有不同的结构,即

{type: "messagetype", msg: { /* structure different for each message type */ } }

有什么方法可以对消息进行“部分”解码,仅type在继续将实际消息解码为go结构之前检查该字段?

这是否有必要编写一个自定义Codeca’la JSON,以将其委托给消息本身的JSON编解码器?


问题答案:

使用json.RawMessage延迟解码,例如

struct {
    type string
    msg  json.RawMessage
}

json.RawMessage是一个别名[]byte,您可以根据需要对其进一步解码。



 类似资料:
  • 我有这个tcp插座 接受一条消息,将其转换为字符串并显示它,但是如果连接没有被客户端关闭,我就不能像预期的那样看到服务器上显示的消息 如何在不需要关闭客户端连接的情况下(由客户端)从客户端发送多条消息? 这里是NodeJs中的客户端 谢谢valeriano cossu

  • 问题内容: 我一直试图从PubNub解析此JSON消息,但没有任何运气: 有没有人知道如何在golang中解码这种复杂类型? 问题答案: 简短的答案是,您不能直接将非同类型的JSON数组(按您的示例)解组到golang结构中。 长答案是,您应该为PubNubMessage类型定义一个方法,该方法将JSON字符串解组为an ,然后使用类型断言来确保所需的格式并填充结构。 例如:

  • 我有几个关于Java套接字编程的问题。 > 我有一个进程需要跨多个套接字连接发送一条消息。现在我有如下内容 这是原子能的吗?或者,在并发环境中,它们是否有可能在几乎相同的时间发送? 在并发环境中,套接字连接(设置为PrintWriter)的输出流是否已经互斥?比如说,两个线程想要同时写入PrintWriter。如果没有在PrintWriter上显式互斥,流的任何输出都会被弄乱吗?

  • 我的系统有两种不同类型的消息-类型A和B。每条消息都有不同的结构-类型A包含一个int成员,类型B包含一个double成员。我的系统需要将这两种类型的消息传递给许多业务逻辑线程。减少延迟非常重要,因此我正在研究使用中断器以机械方式将消息从主线程传递到业务逻辑线程。 我的问题是,破坏者只接受环形缓冲区中的一种类型的对象。这是有意义的,因为破坏者预先分配了环形缓冲区中的对象。然而,这也使得通过Disr

  • 计算机网络基础 ip地址 为了使网络上的计算机能够彼此识别对方,每台计算机都需要一个IP地址以标识自己。 IPv4:32位,IPv6:64位 OSI七层参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 地址解析 地址解析是指将计算机的协议地址解析为物理地址,即MAC(Medium Access Control)地址,又称为媒体访问控制地址。通常,在网络上由地址解析协议(ARP)

  • 我想广播消息本地到许多应用程序。对于这一点,我认为UDP套接字是最好的IPC,纠正我,如果我是Worwn。 并倾听: 问题是我必须像这样通过IP192.168.1.255,但在实际场景中可能没有eth0接口,只有环回。那我怎么才能做到这一点呢?