Отправить на сервер с клиента для запуска функции - PullRequest
0 голосов
/ 24 октября 2018

Я импортирую некоторые функции из моего файла server.js и хочу, чтобы их можно было вызывать из другого файла (мой клиент, работающий на другом порту - одним нажатием кнопки) - используя axios с реагировать спередиконец).У меня также есть проблема с сокетами, которые я использую, так как мне интересно, как я смогу на самом деле передать на принимающий сокет.

У меня есть intentTriggering.orderNumberResponse () (который я хочу вызвать), который комментируется в конце моего сообщения, потому что, если я оставлю его там, он будет работать, когда соединение будет установлено впервые (не из почтового запроса), но я хочу вызывать его только при получении запроса - так что мойвопрос состоит из двух частей, если я могу получить почтовый запрос, работающий, где этот intentTriggering.orderNumberResponse () заключен в моем app.post, как я могу тогда передать в сокет как вне его области?а также я пытаюсь отправить на этот адрес сервера от моего клиента, чтобы вызвать эту функцию после нажатия кнопки, и я получаю сообщение об ошибке: 'net :: ERR_SSL_PROTOCOL_ERROR' 'Uncaught (в обещании) Ошибка: ошибка сети'

server.js:

const intentTriggering = require('./Assets/ApiCalls/intentTriggering')
const shopifyApiRequest = require('./Assets/ApiCalls/shopifyApiRequest')

const port = 3400;
const server = app.listen(port, () => console.log(`Example app listening on port ${port}!`))
var response = 'DUGGY'
app.get('/', (req, res) => res.send('Hello World!'))

app.post('/matchingIntent', function (req, res) {
    console.log('response from client - return button press' + res)
    intentTriggering.orderNumberResponse()
});

const io = socket(server)

io.on('connection', (socket) => {

intentTriggering.initialResponse((response) => {
    socket.emit('Response', ({ text: response }))
})

socket.on('Message', (message) => {
    logmsg = {
        "user": socket.id,
        "domain": message.domain,
        "msg": message.data.text,
        message
    }
    console.log('Made a connection!' + socket.id)



    /*
    DialogFlow conversation logic imported below.
    */
    dialogFlowConnection.dialogFlowConversationClient(socket, message, (response) => {

        socket.emit('Response', ({ text: response }))
    })

})

// initiated by return button -
intentTriggering.matchingResponse((response) => {
    socket.emit('Response', ({ text: response }))
})

shopifyApiRequest.matchRequestThenGetRefundCalculationApiCall((response) => {
    socket.emit('Response', ({ text: response }))

})

})

мой клиент пытается отправить сообщение:

class Button extends Component {



intentTriggerMatching() {

    const matching = {
        reason: 'intiate matching'
    };
    console.log('button has been pressed');

    axios.post(`https://localhost:3400/matchingIntent`, { matching })
        .then(res => {
            console.log(res);
            console.log(res.data);
        })
}

render() {
    return (
        <div>
            <button onClick={this.intentTriggerMatching}>Return</button>
        </div>
    )
}

}

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

...