extraHeaders在socket.io-client

时间:2018-11-23 03:14:36

标签: node.js socket.io nwjs

嗨,我的代码在nodejs中看起来像这样,可以正常工作!

但是当我尝试在nwjs应用程序中使用完全相同的代码时,事实并非如此!因为我闻到它认为它运行在Web浏览器下,并且尝试使用nwjs的Chrome浏览器的本机功能。

function connecttest(domain)
{
socket = require('socket.io-client')('https://ws.'+domain.replace('www.').replace('m.'),{
  forceNode:true,
  transports: ['websocket'],
  extraHeaders: {
      'Origin': 'https://www.'+domain.replace('www.').replace('m.')
  },
  transportOptions: {
    polling: {
      extraHeaders: {
        'Origin': 'https://www.'+domain.replace('www.').replace('m.')
      }
    }
  }
});
socket.on('connect',  function(socket){
    console.log("ok");
socket.emit('query', {"body":{"siteId":"9","source":1,"lang":"tr"},"action":"site.session","frontEndId":0,"token":null});
socket.on('response', function(data){
console.log(data);
});

});
}

fiddler sniff

如您所见,它无法设置正确的原点标题

but

但是它可以在普通的-nodejs脚本下工作

1 个答案:

答案 0 :(得分:1)

也许是您的transports: ['websocket']。在这里,official documentation

带有ExtraHeaders

这仅在启用polling传输的情况下有效 (默认设置)。使用时不会附加自定义标题 websocket作为运输工具。发生这种情况是因为WebSocket 握手不支持自定义标头。 (有关背景,请参阅 WebSocket protocol RFC