我使用websocket进行移动应用项目的实时通信。我实现了基本的安全逻辑: 要连接到服务器,客户端必须有一个密钥
- 当客户端连接到服务器时,它会立即发送包含身份验证信息的JSON对象
{
action:"auth",
device_id: "string",
auth_key: "string",
user: "string"
}
- 如果密钥正确,服务器将回复会话ID,或者断开连接 - 由此,客户端发送的每个数据都将是具有该会话ID的JSON对象,以便服务器可以识别它,所有未知客户端都被丢弃。
现在最大的问题是,WebSocket协议并不能理解JSON,所以我必须使用JSON.stringify()和JSON.parse()来发送我的数据,同时我必须检查会话id有效,这需要时间,应用程序不再平滑(在它之前)。
例如,如果它记录鼠标指针移动,这些数据将在鼠标移动时发送到服务器,因此它会在短时间内多次发送数据, 而且由于我实施的逻辑,它根本不顺利
{
session_id: "string",
user: "string"
action:"mousemove",
position: {
x: int,
y: int
}
}
我担心的是:
- 保护服务器,以便没有人可以访问它并在未经授权的情况下发送命令。
- 真正保持实时
- 拥有良好的数据格式(如果可能,请使用JSON)
答案 0 :(得分:2)
要确保您的通信安全,您需要使用TLS连接。 您正在使用用户身份验证的东西看起来没问题。
但奇怪的是,身份验证时间对您来说是一个问题,可能需要实现会话缓存,以便更快地进行会话ID验证。
JSON不是从大小角度进行网络数据传输的最佳格式,但WebSocket规范没有指定格式,它取决于您使用什么,JSON也可以,除非您真的关心流量节省。< / p>
为了使您的通信流畅,您可以在客户端聚合数据,例如每秒发送一次此数据。我相信你实际上并不需要那么多的鼠标坐标。