尝试使用 socket-io 支持不同的语言,并且根据我的理解使用 Headers 是不可能的,所以留下查询参数。 用户可以仅在第一次连接时切换语言,但在客户端多次通过在服务器端捕获的每个已发送消息上添加查询值。
在第一次连接时,我将查询值添加到它工作的选项中,但是对于下一个发出的请求,我无法捕获新的查询值。他们的方法就像节点middleWare一样,在服务器端捕获socket-io的选定语言。
这是我用英语连接的客户端代码,然后切换到法语:
const options = {
transports: ['websocket'],
'force new connection': true,
query: {lang: 'en'}
};
const client = io.connect(socketURL, options)
client.on('connect', () => {
client.emit('create', '/note', payload, {lang: 'fr'}, (err, data) => {
console.log(data.title); // should be in French but its in English
client.disconnect();
});
});