![](/img/trans.png)
[英]Node.js: Which module to “require('..')” to use socket.io?
[英]Node.js + Socket.io: When trying to use socket-anti-spam module, EADDRINUSE error appears
我正在嘗試在我的 web 應用程序中使用socket-anti-spam
模塊( https://github.com/michaeldegroot/socket-anti-spam )。 但是,當我嘗試使用它時,出現以下錯誤:
錯誤:聽 EADDRINUSE:::3000
下面是我的代碼:
var express = require("express");
var socket = require("socket.io");
var socketListen = socket.listen(3000);
var bodyParser = require('body-parser');
var cors = require('cors');
var SocketAntiSpam = require("socket-anti-spam");
require('dotenv').config({ path: 'variable.env' });
// Initialize Node.JS application
var app = express();
var server = app.listen(process.env.PORT || 3000);
app.use(express.static("public", {
dotfiles: 'allow'
}));
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const socketAntiSpam = new SocketAntiSpam({
banTime: 30, // Ban time in minutes
kickThreshold: 2, // User gets kicked after this many spam score
kickTimesBeforeBan: 1, // User gets banned after this many kicks
banning: true, // Uses temp IP banning after kickTimesBeforeBan
io: socketListen, // Bind the socket.io variable
});
您嘗試在同一端口 (3000) 上偵聽兩次,這就是您收到“地址正在使用”錯誤的原因。
嘗試類似:
const SocketAntiSpam = require('socket-anti-spam')
const app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
const listen = server.listen(3000);
const socketAntiSpam = new SocketAntiSpam({
banTime: 30,
kickThreshold: 2,
kickTimesBeforeBan: 1,
banning: true,
io: io,
})
io.on('connection', function(socket){
console.log('a user connected');
socket.on('spam', (data) => {
console.log(data);
})
});
app.get('/hello', (request, response) => {
response.send('ok');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.