从客户端发布到服务器以触发功能

时间:2018-10-24 16:17:47

标签: javascript node.js reactjs post axios

我正在将一些函数导入到server.js文件中,并且希望能够从另一个文件中调用它们(我的客户端在另一个端口上运行-单击按钮即可-从React Front使用axios结束)。我也正在使用的套接字存在问题,因为我想知道如何将其实际发射到接收套接字。

我有我的intentTriggering.orderNumberResponse()(我想调用它),它在我的帖子结尾处进行了注释,因为如果我将其保留在那里,则在第一次建立连接时有效(不是来自发布请求),但是我只想在收到请求通过时调用它-所以我的问题分为两部分,如果我可以在我的“ app.post”中包含此intentTriggering.orderNumberResponse()的地方使发布请求正常工作,我该怎么办?然后发出它作为范围之外的套接字?而且我也试图从我的客户端发布到此服务器地址,以在单击按钮后出现错误并触发错误:'net :: ERR_SSL_PROTOCOL_ERROR''未捕获(承诺)错误:网络错误'

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中发送。

0 个答案:

没有答案