msg

package
v0.1.25 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2024 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StreamCloseFlag_Open  = 0
	StreamCloseFlag_Close = 1
	StreamCloseFlag_Reset = 2
)

Variables

This section is empty.

Functions

func Receive

func Receive(chainMessage *ChainMessage)

func Send

func Send(chainMessage *ChainMessage)

Types

type ChainMessage

type ChainMessage struct {
	UUID  string `json:"uuid,omitempty"`
	Topic string `json:"topic,omitempty"`
	/**
	 * 说明的场景是peerclient->peerendpoint->peerendpoint->perclient
	 * 最终的消息接收目标,如果当前节点不是最终的目标,可以进行转发
	 * 如果目标是服务器节点,直接转发,
	 * 如果目标是客户机节点,先找到客户机目前连接的服务器节点,也许就是自己,然后转发
	 */
	/**
	 *	以下四个字段方便对消息处理时寻找目的节点,topic是发送给主题的,TargetPeerId是发送给最终目标peer的
	 */
	TargetPeerId           string `json:"targetPeerId,omitempty"`
	TargetClientId         string `json:"targetClientId,omitempty"`
	TargetConnectSessionId string `json:"targetConnectSessionId,omitempty"`
	TargetConnectPeerId    string `json:"targetConnectPeerId,omitempty"`
	TargetAddress          string `json:"targetAddress,omitempty"`
	/**
	src字段,SrcConnectSessionId在发送的时候不填,到接收端自动填充,表示src的连接peerendpoint
	最初的发送peerclient信息,在最初连接节点接收的时候填写
	*/
	SrcConnectSessionId string `json:"srcConnectSessionId,omitempty"`
	SrcConnectPeerId    string `json:"srcConnectPeerId,omitempty"`
	SrcPeerId           string `json:"srcPeerId,omitempty"`
	SrcClientId         string `json:"srcClientId,omitempty"`
	SrcAddress          string `json:"srcAddress,omitempty"`
	// 本次连接peerendpoint的信息,ConnectSessionId在接收节点处填写
	ConnectSessionId string `json:"connectSessionId,omitempty"`
	ConnectPeerId    string `json:"connectPeerId,omitempty"`
	//wss或者libp2p
	ConnectAddress string            `json:"connectAddress,omitempty"`
	MessageType    msgtype.MsgType   `json:"messageType,omitempty"`
	MessageDirect  msgtype.MsgDirect `json:"messageDirect,omitempty"`
	/**
	 * 经过目标peer的公钥加密过的对称秘钥,这个对称秘钥是随机生成,每次不同,用于加密payload
	 */
	PayloadKey      string                  `json:"payloadKey,omitempty"`
	NeedCompress    bool                    `json:"needCompress,omitempty"`
	NeedEncrypt     bool                    `json:"needEncrypt,omitempty"`
	SecurityContext *crypto.SecurityContext `json:"securityContext,omitempty"`
	/**
	 * 消息负载序列化后的寄送格式,再经过客户端自己的加密方式比如openpgp(更安全)加密,签名,压缩,base64处理后的字符串
	 */
	TransportPayload string `json:"transportPayload,omitempty"`
	/**
	 * 不跨网络传输,是transportPayload检验过后还原的对象,传输时通过转换成transportPayload传输
	 */
	Payload interface{} `json:"-"`
	Tip     string      `json:"tip,omitempty"`
	/**
	 * 负载json的源peer的签名
	 */
	PayloadSignature                  string `json:"payloadSignature,omitempty"`
	PreviousPublicKeyPayloadSignature string `json:"previousPublicKeyPayloadSignature,omitempty"`
	/**
	 * 根据此字段来把TransportPayload对应的字节还原成Payload的对象,最简单的就是字符串
	 * 也可以是一个复杂的结构,但是dht的数据结构(peerendpoint),通用网络块存储(datablock)一般不用这种方式操作
	 * 而采用getvalue和putvalue的方式操作
	 */
	PayloadType     string     `json:"payloadType,omitempty"`
	CreateTimestamp *time.Time `json:"createTimestamp,omitempty"`
	StatusCode      int        `json:"statusCode,omitempty"`
}

* 采用libp2p实现后,chainmessage只用于自定义协议点对点的数据传输,不涉及网络递归的存放和查找 因此结构需要简化,不需要两层的结构了

func (*ChainMessage) Marshal

func (this *ChainMessage) Marshal() ([]byte, error)

func (*ChainMessage) TextMarshal

func (this *ChainMessage) TextMarshal() (string, error)

func (*ChainMessage) TextUnmarshal

func (this *ChainMessage) TextUnmarshal(data string)

func (*ChainMessage) Unmarshal

func (this *ChainMessage) Unmarshal(data []byte)

type StreamCloseFlag

type StreamCloseFlag uint

Directories

Path Synopsis
biz

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL