node.js - 为什么socket.io 让服务器的CPU 100%?Nuxt+koaJS
问题描述
我对 SocketIO + NuxtJS 有疑问。在生产模式下,由于我连接了 socketIO 服务器,有时服务器的 CPU 使用率突然达到 100%。如果您知道这个问题,请帮助我。谢谢..
也许我猜这个问题与断开事件“传输轮询”有关。我调试了 socket io 服务器日志,最后一个日志的行都是user disconnected: H2X9WQSD6DSzMFT-AAEO, polling
.
我的后端代码
// server.js
…
const http = require('http')
const app = new Koa()
const socket = require('Socket.IO')
…
const server = http.createServer(app.callback())
const io = socket(server)
…
io.sockets.on('connection', function(socket) {
console.log('a user connected’)
socket.on('message', message => {
io.sockets.emit('message', message)
})
socket.on('disconnect', () => {
console.log('user disconnected: ' + socket.id + ', ' + socket.handshake.query.transport)
})
})
server.listen(port)
…
我的前端代码
// plugin/socket.js
import Vue from 'vue'
import io from 'Socket.IO-client'
Vue.prototype.$socket = io(process.env.HOST_URL)
// nuxt.config.js
...
plugins: [
{ src: '~/plugins/socket.js', ssr: false },
],
...
// pages/test.vue
...
export default {
data() {
return { messages: [], message: '' }
},
mounted() {
this.$socket.on('message', message => {
this.messages.push(message)
})
},
beforeDestroy() {
this.$socket.off('message')
},
methods: {
//chat to server
handleChat() {
if (this.message) {
this.$socket.emit('message', this.message)
this.message = ''
}
},
}
}
解决方案
推荐阅读
- angular - NgModelChange on input number not updating the view
- android - SharedPreferences Clear 不清除所有数据
- c# - Utf8JsonReader.ToString 给出:无法获取令牌类型“无”的值
- google-apps-script - 短时间内服务调用次数过多:日历。在通话之间尝试 Utilities.sleep(1000)。可以提高限额吗?
- swift - 金属可以实现交换链吗?
- typo3 - TYPO3 核心异常:“Id 超出域”而不是错误 404
- python - Python while 循环被跳过
- jenkins - 詹金斯“有条件的预期”
- ios - 如何在 Azure DevOPS 中的池中的特定代理上运行管道
- c++ - cuda 共享内存,内核中没有同步,内核过早输出