我正在使用Node.js,我试图让PubNub集成,让我的聊天室运行起来。我一直在关注许多教程,他们似乎都从他们的客户端执行PubNub。但是,为了确保我的发布密钥和订阅密钥的安全性,我希望从我的服务器端(Nodejs)执行PubNub。但是,当我尝试这样做时,问题就出现了。 这是我的服务器:
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var request = require('request');
var pubnub = require('pubnub');
pubnub = pubnub.init({
subscribe_key: 'sub-c-demo',
publish_key: 'pub-c-demo',
ssl: true
});
//Defining routes
var routes = require('./routes/index');
//Init express
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
//View Engine
app.set('view engine', 'ejs');
//Set Static Folder
app.use(express.static(path.join(__dirname, 'public')));
//Get route
app.use('/', routes);
//Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function(){
console.log('3000 is the magic port!!');
});
为什么我在尝试初始化pubnub时会得到TypeError: pubnub.init is not a function
?
$ node server
/Users/macbookpro/Desktop/project007/server.js:8
var pubnub = pubnub.init({
^
TypeError: pubnub.init is not a function
at Object.<anonymous> (/Users/macbookpro/Desktop/project007/server.js:8:21)
at Module._compile (module.js:573:32)
at Object.Module._extensions..js (module.js:582:10)
at Module.load (module.js:490:32)
at tryModuleLoad (module.js:449:12)
at Function.Module._load (module.js:441:3)
at Module.runMain (module.js:607:10)
at run (bootstrap_node.js:382:7)
at startup (bootstrap_node.js:137:9)
at bootstrap_node.js:497:3
我遵循了似乎所有必要步骤:
npm i pubnub --save
var pubnub = require('pubnub');
https://cdn.pubnub.com/sdk/javascript/pubnub.4.4.2.min.js
(包括我标题中的最新sdk)
但似乎某处出现了错误导致我对错误以及其他一些事情感到困惑。
1)。我从三个方面一直在拼凑这些东西,但我应该真正关注哪些教程?
https://www.pubnub.com/docs/nodejs/pubnub-javascript-sdk-v4
https://www.pubnub.com/docs/javascript/pubnub-javascript-sdk-v4
2)。我的发布密钥和订阅密钥是否需要保护,或者我可以从客户端运行PubNub,如大多数教程中所示?
3)。忘记服务器端和客户端,我应该将PubNub作为javascript文件执行并链接脚本吗? <script src="js/pubnubchatroom.js"></script>
我是这个东西的新手,我只想试着把头包裹起来。提前谢谢!
答案 0 :(得分:0)
有一种初始化PubNub SDK的新方法。请参阅以下示例。 v4 SDK不兼容插件。您可以在环境之间成功混合使用v4和v3 SDK。
const PubNub = require('pubnub');
const pubnub = new PubNub({
publishKey : 'demo',
subscribeKey : 'demo'
})