Nodejs服务器无法检测到与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 } 

我的p2pvideo网站是通过在Nodejs + SocketIO服务器上运行的WebRTC实现的。 我一直在试图将pubnub纳入它,并认为这将是容易的,因为pubnub支持SocketIO(或至less客户端?)。 真的没有想到这将是难以设置服务器端。

任何input都在这个? 我觉得这很简单,我不能把手指放在一边

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

带有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!'); } 

你使用的是什么版本的socket.io?

这可能无法解决它。 我正在使用版本1. +你有没有尝试过:

  io.on('connection', function(socket){ console.log('user connected'); });