NodeJS-使用套接字并在同一服务器上进行表达

时间:2020-03-15 18:00:42

标签: node.js express sockets http tcp

我在NodeJS开发和联网领域还很陌生。我在这里搜索了很多类似的问题,但是找不到简单的解决方案。

我想创建一个服务器,该服务器将能够与GPS手表建立TCP(套接字)连接,并且还能够接收来自其他来源(例如移动应用)的HTTP请求。

当前代码,它使我可以通过套接字连接(与网络模块)与手表进行通信:

const net = require('net')
const server = net.createServer()
const port = 8001

server.on('connection', (socket) => {
    console.log('Connection opened')

    socket.on('data', (chunk) => {
        console.log(chunk.toString())
    })

    socket.on('error', (err) => {
        console.log(err)
    })
})

server.listen(port, () => {
    console.log('Server running on port ' + port)
})

在一个理想的世界中,我想使用express处理HTTP请求。我已经尝试过(这次是使用http模块):

const http = require('http')
const express = require('express')

const app = express()
const server = http.createServer(app)
var port = 8001

app.get('/', (req, res) => {
    res.send('Get Request Working')
})

server.on('connection', (socket) => {
    console.log('Connection opened')

    socket.on('data', (chunk) => {
        console.log(chunk.toString())
    })

    socket.on('error', (err) => {
        console.log(err)
    })
})

server.listen(port, () => {
    console.log('Server running on port ' + port)
})

我的get请求工作正常,套接字也工作(我可以看到连接日志和数据日志),但是在接收数据时,出现以下错误:

Connection opened
[3G*1204761865*0009*LK,0,0,90]
Error: Parse Error: Invalid method encountered
    at socketOnData (_http_server.js:563:22)
    at Socket.emit (events.js:323:22)
    at addChunk (_stream_readable.js:294:12)
    at readableAddChunk (_stream_readable.js:275:11)
    at Socket.Readable.push (_stream_readable.js:209:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
  bytesParsed: 0,
  code: 'HPE_INVALID_METHOD',
  reason: 'Invalid method encountered',
  rawPacket: <Buffer 5b 33 47 2a 31 32 30 34 37 36 31 38 36 35 2a 30 30 30 39 2a 4c 4b 2c 30 2c 30 2c 39 30 5d>
}

我尝试了很多事情,连续2天用Google搜索,但是找不到解决方案。任何提示或建议都会有用。

我也尝试过使用socket.io库,但是我想它只有在服务器端和客户端上实现时才有效。我无法修改手表通讯协议。

关于, L

0 个答案:

没有答案