Node.js服务器无法检测到与Pubnub + SocketIO的连接

杰里·福克斯

我的nodejs服务器无法检测到新浏览器何时连接(“连接”事件),我也不知道为什么。我将工作范围缩小了几天,并怀疑这是由于在浏览器上实现了pubnub套接字连接所致。

以下是我的server.js

var http    = require('http')
  , connect = require('connect')
  , io      = require('socket.io')
  , fs      = require('fs')
  , uuid    = require('node-uuid')
  , _       = require('lodash');

// pubnub!!! (how to initialize it for use on server)
var pubnub  = require('pubnub').init({
   channel:        "my_channel",
   publish_key:    "pub-key",
   subscribe_key:  "sub-c-key",
   uuid:           "Server",
   origin : 'pubsub.pubnub.com'
});  

pubnub.subscribe({
    channel: 'my_channel',
    callback: function(message) {
      console.log("Message received: ", message);
    },
    message:  'Server ready',
    presence: function(data) {
      console.log("Presense: ", data);
    },
    connect:   publish
});

// various socket.on() events omitted

var app = connect().use(connect.static(__dirname)).use(connect.directory(__dirname));
var server = http.createServer(app);
server.listen(8888);
io = io.listen(server);

io.sockets.on('connection', handleNewPeer);

到达html页面后,从脚本标签运行了doConnect(isBroadcaster)函数。

doConnect函数(在peer.js中):

var doConnect = function(isBroadcaster) {

  console.log("doConnect");
  // broadcaster or normal peer
  var user;
  if (isBroadcaster) 
    user = "Broadcaster";
  else 
    user = "Viewer";

  (function() {
  var pubnub_setup = {
    channel:       "my_channel",
    publish_key:   "pub-c-key",
    subscribe_key: "sub-c-key",
    user:          user
  };

  // Note removed the var
  socket = io.connect( 'http://pubsub.pubnub.com', pubnub_setup);

 // various socket.on() omitted

 })();

这是以前使用socketIO的情况,并且一直在工作:

var doConnect = function(isBroadcaster) {
  socket = io.connect();
// various socket.on() omitted 
}

我的p2p视频网站是通过在Nodejs + SocketIO服务器上运行的WebRTC实现的。我一直在尝试将pubnub并入其中,并认为这很容易,因为pubnub支持SocketIO(或者至少是客户端?)。真的不认为设置服务器端会如此困难。

对此有什么投入吗?我认为这很简单,我无法将手指放在上面

斯蒂芬·布鲁姆

使用Node.JS的服务器上的Socket.IO

带有PubNub的Socket.IO不提供Node.JS Socket.IO后端选项。但是,您可以直接将PubNub SDK用于连接事件。

NPM套餐

npm install pubnub

安装PubNub NPM之后,您可以使用node.js服务器后端:

Node.js后端代码

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// PubNub!!! (how to initialize it for use on server)
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
var pubnub = require('pubnub').init({
   publish_key   : "pub-key",
   subscribe_key : "sub-c-key",
   uuid          : "Server-ID"
});  

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// On user Connect
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
function on_user_connect(data) {
  console.log( "User Connected: ", data.uuid );
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// On user Leave
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
function on_user_leave(data) {
  console.log( "User Left: ", data.uuid );
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Open Socket Connection for User Join Events
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
pubnub.subscribe({
    channel  : 'my_channel',
    connect  :   connected
    message  : function(message) {
      console.log("Message received: ", message);
    },
    presence : function(data) {
      if (data.action == "leave")   on_user_leave(data);
      if (data.action == "timeout") on_user_leave(data);
      if (data.action == "join")    on_user_connect(data);
    }
});

function connected() {
  console.log('connected!');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js:通过socketio将客户端与服务器断开连接

来自分类Dev

无法连接到Node.js服务器

来自分类Dev

无法连接到Android中的Node JS服务器

来自分类Dev

无法从Node.js连接到Telnet服务器

来自分类Dev

无法连接到Android中的Node JS服务器

来自分类Dev

Node 服务器的 Systemd 服务无法连接到 MongoDB

来自分类Dev

Node.js-Socketio无法与https服务器一起使用,可能是什么原因?

来自分类Dev

Node.js-Socketio无法与https服务器一起使用,这可能是什么原因?

来自分类Dev

Wndows 10 / Node.js无法连接到MySQL服务器

来自分类Dev

Flutter套接字IO无法连接到Node JS套接字IO服务器

来自分类Dev

无法使用公共IP连接到Node JS服务器

来自分类Dev

Node.js-服务器关闭了连接?

来自分类Dev

从网站连接到Node.js服务器?

来自分类Dev

如何连接到远程Node.js服务器?

来自分类Dev

PHP websocket连接到node.js服务器

来自分类Dev

node.js服务器泄漏TCP连接?

来自分类Dev

如何使WebView检测到与服务器的连接失败

来自分类Dev

如何检测到服务器的连接是否随机断开

来自分类Dev

SFML 检测到服务器的多个连接并计算它们

来自分类Dev

客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

来自分类Dev

Socketio错误的配置,将无法连接/登录

来自分类Dev

Socketio 无法从托管站点连接到 Droplet

来自分类Dev

socketIO-客户端无法连接到服务器

来自分类Dev

无法使用socket.io + Express + Webpack连接到Node.js服务器,请求返回404错误

来自分类Dev

Node.js + setInterval =连接丢失:服务器关闭了连接

来自分类Dev

node.js-连接列表器未在TCP服务器中执行

来自分类Dev

Socket.io Node Js服务器和React js客户端未连接

来自分类Dev

MongoError:无法连接到 Node-RED 中的服务器

来自分类Dev

将mongo db连接到远程服务器Node.js

Related 相关文章

  1. 1

    Node.js:通过socketio将客户端与服务器断开连接

  2. 2

    无法连接到Node.js服务器

  3. 3

    无法连接到Android中的Node JS服务器

  4. 4

    无法从Node.js连接到Telnet服务器

  5. 5

    无法连接到Android中的Node JS服务器

  6. 6

    Node 服务器的 Systemd 服务无法连接到 MongoDB

  7. 7

    Node.js-Socketio无法与https服务器一起使用,可能是什么原因?

  8. 8

    Node.js-Socketio无法与https服务器一起使用,这可能是什么原因?

  9. 9

    Wndows 10 / Node.js无法连接到MySQL服务器

  10. 10

    Flutter套接字IO无法连接到Node JS套接字IO服务器

  11. 11

    无法使用公共IP连接到Node JS服务器

  12. 12

    Node.js-服务器关闭了连接?

  13. 13

    从网站连接到Node.js服务器?

  14. 14

    如何连接到远程Node.js服务器?

  15. 15

    PHP websocket连接到node.js服务器

  16. 16

    node.js服务器泄漏TCP连接?

  17. 17

    如何使WebView检测到与服务器的连接失败

  18. 18

    如何检测到服务器的连接是否随机断开

  19. 19

    SFML 检测到服务器的多个连接并计算它们

  20. 20

    客户端无法连接到Azure应用服务上托管的Node.js Websocket服务器吗?

  21. 21

    Socketio错误的配置,将无法连接/登录

  22. 22

    Socketio 无法从托管站点连接到 Droplet

  23. 23

    socketIO-客户端无法连接到服务器

  24. 24

    无法使用socket.io + Express + Webpack连接到Node.js服务器,请求返回404错误

  25. 25

    Node.js + setInterval =连接丢失:服务器关闭了连接

  26. 26

    node.js-连接列表器未在TCP服务器中执行

  27. 27

    Socket.io Node Js服务器和React js客户端未连接

  28. 28

    MongoError:无法连接到 Node-RED 中的服务器

  29. 29

    将mongo db连接到远程服务器Node.js

热门标签

归档