【发布时间】:2014-06-24 00:10:36
【问题描述】:
我的 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) 函数从 script 标签运行
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(或者至少是客户端?)。真的没想到设置服务器端会这么难。
对此有任何意见吗?我认为这很简单,我无法将手指放在上面
【问题讨论】:
标签: javascript node.js socket.io webrtc pubnub