Реализация входа в приложение и связь в реальном времени параллельно - PullRequest
0 голосов
/ 17 января 2019

Это скорее вопрос архитектуры программного обеспечения, а не конкретная проблема кодирования.

Я пишу приложение ios, которое полагается на мгновенную доставку сообщений и событий на другие мобильные устройства, подписанные на услугу. Для этого я задействовал socket.io, работающий на бэкэнд-сервере node.js.

Следующим шагом является система аутентификации пользователей, где я хотел бы, чтобы пользователи регистрировались и входили в систему, чтобы иметь возможность использовать сервис.

Я хотел бы получить рекомендации о том, как лучше всего реализовать эту функциональность. Опции, которые я вижу:

  1. Реализация функций регистрации / входа через socket.io
  2. Реализация регистрации / входа в систему через тот же бэкэнд node.js приложение, но с использованием экспресс.
  3. Полностью отделяя регистрация / вход в систему из компонентов реального времени и указание на одну и ту же базу данных для аутентификации и передачи токенов аутентификации.

Основные проблемы, с которыми я сталкиваюсь, - это поддержание задержки приложения в реальном времени и обеспечение безопасности. Предположим, что все сделано по TLS

1 Ответ

0 голосов
/ 17 января 2019

Конечно, вы можете реализовать эти вещи с помощью socket.io и express.

Здесь я хотел бы включить ссылку. Где вы можете увидеть, как просто вы можете создать приложение в реальном времени.

Простое приложение в реальном времени с использованием socket-io

Пример кода: -

на стороне сервера:

//-----------------Dependencies------------------
var app     =     require("express")();
var pgsql   =     require("pg");
var http    =     require('http').Server(app);
var io      =     require("socket.io")(http);
//------------------------------------------------

const con = new pgsql.Pool({
 user: 'postgres',
 host: 'localhost',
 database: 'fbstatus',
 password: 'postgres',
 port: '5432'
});

app.get("/",function(req,res){
 res.sendFile(__dirname + '/index.html');
});

http.listen(3000, function(){
 console.log('listening on *:3000');
});

// Connect to Postgres
con.connect(function(err, client) {
 if(err) {
  console.log(err);
 }

io.sockets.on('connection', function (socket) {

 // Listen for all pg_notify channel messages
 client.on('notification', function(msg) {
  console.log(msg);
  socket.emit('update', msg);
 });

 // Designate which channels we are listening on. Add additional 
 channels with multiple lines.
 client.query('LISTEN notification_events');
 });
});

Клиентская сторона: -

<!DOCTYPE html>
<html>
<body>
  <h1>real time data recieved from server</h1>
  <p>When you insert a new row into database, the below p tag 
  content will be changed</p>
  <p id="socketio"></p>
</body>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('update', function (data) {
    var data_got=JSON.parse(data.payload)
    console.log(data_got["data"]["id"]);
    document.getElementById("socketio").innerHTML = data.payload;
  });
</script>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...