1

I am using Node.js here with Pusher, but it's not a pusher related question, it's more of a Node.js question.

In Server.js (declare pusher, and used pusher once for authentication)

import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser'
import Pusher from 'pusher'

const PORT = 4001;
const app = express();

app.use(cors());
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());


const pusher = new Pusher({
    appId: "ddsd",
    key: "afdafa",
    secret: "asdfasdfasfadsf",
    cluster: "mt1",
    useTLS: true
});

app.post("/pusher/user-auth", (req, res) => { //<--pusher is used once here for authentication
    const socketId = req.body.socket_id;
    const user = {id: '12345'};
    const authResponse = pusher.authenticateUser(socketId, user);     
    res.send(authResponse);   
});

I have a utility file call controllers/messagesWebsocketController

class messagesWebsocketController()
      async sendMessageToClients (message) {
         pusher.sendToUser("12345", "my-event1", { message}); //<--how do I pass pusher in?
      }
const messagesWebsocketController = new MessagesWebsocketController();

export default messagesWebsocketController;

So other classes can simply

import messagesWebsocketController from 'controllers/messagesWebsocketController'
...
messagesWebsocketController.sendMessageToClients("hello");

The question is for controllers/messagesWebsocketController, how do I pass the pusher instance in from server.js?

william007
  • 17,375
  • 25
  • 118
  • 194

1 Answers1

0

You can create separate file for pusher, export it and you can use it wherever you like in your app.

const pusher = new Pusher({
  appId: 'ddsd',
  key: 'afdafa',
  secret: 'asdfasdfasfadsf',
  cluster: 'mt1',
  useTLS: true
});

export default pusher;

then use it like this import pusher from 'pusher.js'