У меня есть приложение nodejs, которое пингует список ips каждый раз, используя net-ping, и возвращает клиенту через socketio.Он работает правильно локально, но после развертывания на heroku выдает следующую ошибку:
2018-12-12T02:02:53.942131+00:00 app[web.1]: /app/node_modules/raw-socket/index.js:47
2018-12-12T02:02:53.942154+00:00 app[web.1]: this.wrap = new raw.SocketWrap (
2018-12-12T02:02:53.942155+00:00 app[web.1]: ^
2018-12-12T02:02:53.942157+00:00 app[web.1]:
2018-12-12T02:02:53.942159+00:00 app[web.1]: Error: Operation not permitted
2018-12-12T02:02:53.942161+00:00 app[web.1]: at new Socket (/app/node_modules/raw-socket/index.js:47:14)
2018-12-12T02:02:53.942162+00:00 app[web.1]: at Object.exports.createSocket (/app/node_modules/raw-socket/index.js:202:9)
2018-12-12T02:02:53.942164+00:00 app[web.1]: at Session.getSocket (/app/node_modules/net-ping/index.js:147:20)
2018-12-12T02:02:53.942166+00:00 app[web.1]: at new Session (/app/node_modules/net-ping/index.js:101:7)
2018-12-12T02:02:53.942168+00:00 app[web.1]: at Object.exports.createSession (/app/node_modules/net-ping/index.js:545:9)
2018-12-12T02:02:53.942169+00:00 app[web.1]: at Object.<anonymous> (/app/index.js:22:22)
2018-12-12T02:02:53.942171+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:689:30)
2018-12-12T02:02:53.942172+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
2018-12-12T02:02:53.942174+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:599:32)
2018-12-12T02:02:53.942175+00:00 app[web.1]: at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
мой сервер - index.js:
const express = require('express')
const socketIO = require('socket.io')
const path = require('path')
const PORT = process.env.PORT || 3000
const INDEX = path.join(__dirname, 'public/index.html')
const server = express()
.use((req, res) => res.sendFile(INDEX) )
.listen(PORT, () => console.log(`Listening on ${ PORT }`))
const io = socketIO(server)
io.on('connection', (socket) => {
console.log('Client connected')
socket.on('disconnect', () => console.log('Client disconnected'))
})
const targets = [
"185.70.40.182",
"151.101.129.140",
"176.32.103.205"
]
const ping = require ("net-ping")
const session = ping.createSession ()
setInterval(() => {
targets.forEach(function (target){
console.log(target)
session.pingHost (target, function (error, target, sent, rcvd) {
io.sockets.emit('update',{
ip: target,
rtt: rcvd - sent
})
})
})
}, 5*1000)
Я несколько раз менял свой код, следуя предложениям онлайн иНикто не исправил эту проблему в уроке heroku.Я могу понять, что я делаю не так здесь.