# websocket 开发说明

## 简介
Websocket 是用于与浏览器客户端实现双向通讯的协议，可用来实现即时通讯、交易所、消息推送等。

## 关于mm websocket的使用
前端和服务端均已集成webstock功能，前端使用mm_sdk，后端使用com/websocket框架机制

## websocket 使用规范
为了让前后端通讯更加稳定、可控，前后端均采用json-rpc2.0的方式进行通讯，采用以下传参规范 ↓

在客户端给服务端发送消息时，或在服务端给客户端发送消息时（响应格式）:
`
	{
		// 消息ID (用于识别对应请求)
		id: "",
		// 调用方法 (例如聊天时为chat、请求获取联系人时为get_contact)
		method: "",
		// 请求参数
		params: {}
	}
`

如果需要在某一端接收到消息后，告诉对方已收到消息或返回内容，可以给对方端推送一条消息（响应格式）:
`
	{
		// 消息ID (用于响应对应请求)
		id: "",
		// 错误提示 (错误时必须返回)
		error: {
			// 错误码
			code: -32602,
			// 错误提示
			message: ""
		},
		// 响应结果 (成功时必须返回)
		result: {}
	}
`

## mm websocket 通讯json-rpc2.0协议原理
	1. 首先websocket给客户端和服务端提供了一个接收消息的接口，可以收到来自对方的消息
	2. 然后双方可以通过收到的json数据中是否含有method属性来判断对方端是请求查询，还是提交数据
	3. 如果是提交数据，则接收数据处理并存储
	4. 如果是请求查询，则给请求做处理，并回推送一条消息
	5. 为了能够识别消息是否成功推送，通过响应格式中的ID属性来判断
	6. 如果非请求或响应, 只是单向推送数据, 那么可以通过id属性值0或空进行识别