【发布时间】:2014-03-28 10:38:16
【问题描述】:
我正在尝试获取用户使用的语言,以便使用 socket.io 和 node.js 为正在播放的视频提供正确的声音文件。 我是 node.js 和 socket.io 的初学者。我使用“navigator.language”在客户端获得了语言,并希望在连接/握手到 socket.io 时发送它。
var language = navigator.language;
var socket = io.connect('http://localhost:1337', { query: language });
在服务器端:
io.set('authorization', function(handshakeData, cb) {
console.log(handshakeData.query);
cb(null, true);});
但我得到的是:
{'en-US': 'undefined', t: '1396002389530'}
我猜第二个属性“t”是已经添加的握手ID。但是我如何访问“en-US”?
我的第二种方法是使用模块“locale”(https://github.com/jed/locale),但是当我使用它时,我总是得到相同的语言,所以我认为它总是能找到服务器的语言。我以为我在请求/响应处理程序中使用它,当新客户端请求页面并发送其 http 标头时。
var handler = function(req, res) {
lang = new locale.Locales(req.headers["accept-language"]);
lang=lang.best(supported);
console.log(pf);
}
我希望你能得到我想要做的事情,并且可能知道更好的解决方案。 提前谢谢你。
【问题讨论】:
标签: javascript node.js sockets socket.io locale