【问题标题】:Listen for socket.io connection inside chrome extension在 chrome 扩展中监听 socket.io 连接
【发布时间】:2015-06-28 00:19:36
【问题描述】:

我能够我的扩展程序我的服务器发送 socket.io 连接,但是我在我的扩展程序内听不到服务器发出的声音。关于这个问题,我发现了相互矛盾的答案:

Opening a Socket.IO connection in a google chrome extension 表示不能这样做;和

Cross-domain connection in Socket.IO 说可以。

为了接受来自我的套接字服务器的发射,我必须更改任何特殊配置吗?

编辑

(注意:我使用的是 AngularJS,但它应该与这个问题无关)

socketFactory.js:

myApp.factory('socketFactory', function($rootScope) {
  var socket = io.connect('//dev.mydomain.com', {'path': '/api/socket'});
  return socket;
}

注入.js:

var packetData = { 'some':'data', 'roomId':'123abc' };
socketFactory.emit('room:join', packetData);
...
socketFactory.on('room:update', function (data) {
  console.log('Received data from socket server');
  console.log(data)
}

socket.js(服务器端):

socket.on('room:join', function ( data ) {
  // Setting socketId to detect disconnect
  data.user.socketId = socket.id;

  socket.join( data.roomId, function() {
    // Some code ...
    io.sockets.to(data.roomId).emit('room:update', {'some':'data', 'roomId': '123abc'});
  }
});

这是我连接的基本设置。当我在非扩展模式下启动应用程序时(我们正在制作一个扩展程序来模拟我们的 web 应用程序),这个系统可以完美运行,但是在扩展程序中,room:update 永远不会被触发。

编辑 2

我们对socket.js 中的socket 对象(在连接时生成)执行了console.log。在标头中,主机似乎是dev.mydomain.com,而引荐来源是www.othersite.com。这可能是问题吗? “宿主”指的是什么?套接字服务器的主机,还是套接字侦听器的主机?在后一种情况下,它没有达到我们运行扩展程序的www.othersite.com 是有道理的。

EDIT 3:……它不知从何而来。一定是某处的比赛条件。关闭不再相关的问题。

【问题讨论】:

  • 您能发布任何详细说明此问题的代码吗?客户端可能不正确

标签: javascript node.js sockets google-chrome-extension socket.io


【解决方案1】:

它突然起作用了。可能是比赛条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多