Понимание сокетов, html-запросов, socket.io и express - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь создать приложение с экспрессом и машинописью.

У меня есть Пользователь и Подписчик.Они должны общаться на моем локальном сервере.Я пытался следовать учебнику, но он работает с html и jQuery, но мне не нужен внешний интерфейс.

Вот мой server.ts:

import express = require('express');
import { User } from './user';
import { Signer } from './signer';
import bodyParser = require('body-parser');

// Create a new express application instance
const app: express.Application = express();

var http = require('http').Server(app);
var io = require('socket.io')(http);

var message: number;

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

app.post('/messages/:message', (req, res) => {
    var msg = req.params.message;
    console.log("req.body" + req.body);
    console.log("req.params" + req.params);
    if (isNaN(msg))
        res.sendStatus(500);
    message = msg;
    io.emit('message', req.params.message);
    res.sendStatus(200);
  });

app.get('/messages/:message', (req, res) => {
    res.send(req.params.message);
  });

io.on('connection', () =>{
    console.log('user or signer is connected')
})

var user = new User(123, 8, 8);
var signer = new Signer(8);

user.signerCommunication(signer, app);

var server = app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
  });

Вот мой пользователь.ts:

class User {

    private data: number;
    private cpkLength: number;
    private rLength: number;
    private r: number;
    cpk: CommitmentPublicKey;

    constructor(data: number, rLength: number, cpkLength: number) {
        this.data = data;
        this.rLength = rLength;
        this.cpkLength = cpkLength;
        var upperBound = Math.pow(2, rLength);
        var lowerBound = Math.pow(2, rLength-1);
        this.r = lowerBound + Math.random() * (upperBound-lowerBound);
        upperBound = Math.pow(2, cpkLength);
        lowerBound = Math.pow(2, cpkLength-1);
        var prime1 = lowerBound + Math.random() * (upperBound-lowerBound);
        var prime2 = lowerBound + Math.random() * (upperBound-lowerBound);
        while (!isPrime(prime1)) {
            prime1 = lowerBound + Math.random() * (upperBound-lowerBound);
        }
        while (!isPrime(prime2)) {
            prime2 = lowerBound + Math.random() * (upperBound-lowerBound);
        }
        const n = prime1 * prime2;
        const qRn = new QuadResGroup(n, prime1, prime2);
        const h = qRn.getEl();
        const genG = new GenGroup(n, h);
        const g = genG.getEl();
        this.cpk = new CommitmentPublicKey(n, g, h);
    }

    // ---> this is the important part:
    public signerCommunication(signer: Signer, app: express.Application) {
        var upperBound = Math.pow(2, this.cpkLength*2);
        var lowerBound = Math.pow(2, this.cpkLength*2 - 1);
        const s = lowerBound + Math.random() * (upperBound-lowerBound);
        const t = RSANumber.modPow(this.cpk.g, s, signer.pk.n);
        var c;
        app.post('http://localhost:3000/messages/' + t.valueOf());
        app.get('http://localhost:3000/messages', (data) => {
            c = data;
            console.log(data);
        });
        console.log(c);
    }

}

Я думал, что мне нужно получить некоторые журналы консоли из метода post- и get, но ничего не происходит.Я считаю, что неправильно перезаписывать приложение, как я это делаю, и вызывать методы из приложения, но я понятия не имею, как вызвать сообщение и получить методы еще.

В примере (https://medium.freecodecamp.org/simple-chat-application-in-node-js-using-express-mongoose-and-socket-io-ee62d94f5804) это делается так:

$.get(‘http://localhost:3000/messages', (data) => {
   data.forEach(addMessages);
   })

или

$.post(‘http://localhost:3000/messages', message)

Или это невозможно сделать так? Поскольку сервер еще не запущен, когда япопытаться опубликовать / получить что-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...