以下是官方 chatdemo 中的路由分配策略算法,通过 CRC32 对用户 ID 进行哈希,再取模映射到对应的连接器(connector)。
var crc = require('crc');
module.exports.dispatch = function(uid, connectors) {
var index = Math.abs(crc.crc32(uid)) % connectors.length; // 通过crc32来生成hash值,取整来分配服务器
return connectors[index];
};
CRC32 的参数是待校验的数据,返回校验码(可能为负数)。它本身可用于验证数据传输的正确性,也可以作为一种简单的哈希函数来使用。