Я пытаюсь создать приложение с экспрессом и машинописью.
У меня есть Пользователь и Подписчик.Они должны общаться на моем локальном сервере.Я пытался следовать учебнику, но он работает с 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)
Или это невозможно сделать так? Поскольку сервер еще не запущен, когда япопытаться опубликовать / получить что-то?