我正尝试与Node.js和socket.io进行聊天
现在这是我的场景我正在使用ubuntu 12.04用户,我在桌面上有文件夹pp
在里面,我是推文服务器文件server.js
这是客户:
$(document).ready(function() {
var urlServer = location.origin + ':8081';
var socket = io.connect(urlServer);
});
$(document).ready(function() {
var urlServer = location.origin + ':8081';
var socket = io.connect(urlServer);
$("#boton").on('click', function() {
var mensaje = $("#mensaje").val();
socket.emit("mensaje", {msg: mensaje});
});
socket.on("mensaje", function(msg) {
console.log("hemos recibido un mensaje", msg);
});
});
这里是服务器
var server = require('http').createServer(),
sio = require('socket.io'),
port = 8081;
server.listen(port);
var io = sio.listen(server, { log:true });
var channels = {};
io.sockets.on('connection', function (socket) {
console.log("Cliente conectado");
socket.on('mensaje', function (msg) {
console.log(msg);
socket.broadcast.emit('mensaje', msg);
});
});
console.log('1- Escuchando en http://localhost:' + port , "");
console.log("");
现在在同一文件夹中我有一个像
这样的html文件<!DOCTYPE html>
<html>
<head>
<script src="../jquery.js"></script>
<script src="../node_modules/socket.io/node_modules/socket.io-client/dist/socket.io"></script>
<script src="clientechat.js.js"></script>
<title>Chat con Node</title>
</head>
<body>
<div id="mensajes"></div>
<input type="text">
<input type="submit" id="boton">
</body>
</html>
当我尝试运行app.js使用节点时
node server.js
我收到错误
warn - error raised: Error: listen EADDRINUSE
我尝试重启所有但不起作用
请告诉我,我做错了什么。
答案 0 :(得分:10)
这意味着您尝试绑定服务器的地址正在使用中。这样做;
Command:
ps -eaf|grep node
Output:
root 28029 27332 0 14:25 pts/2 00:00:03 node myVNC.js
这将显示节点正在运行的进程ID,在本例中为&#34; 28029&#34;
现在使用;
终止此进程IDkill -9 28029
答案 1 :(得分:3)
如果您无法启动应用程序,则可能有一个已在使用给定端口的应用程序。另一个选择是尝试使用另一个端口,看看你是否可以启动它。
检查@Faisal Ameers回答linux命令以使用端口查找程序。
使用Windows上的端口查看此帖子以查找程序:https://stackoverflow.com/a/48199/1958344
这是OS X的一个: https://stackoverflow.com/a/30029855/1958344
答案 2 :(得分:1)
杀死服务器并使用kill.sh文件
重新启动的最佳方法答案 3 :(得分:1)
也许是因为你曾两次打电话给listen(port)
。第二个listen()可能是抛出EADDRINUSE,因为第一个listen()已经在使用端口了。
server.listen(port);
var io = sio.listen(server, { log:true });
答案 4 :(得分:0)
您的服务器设置似乎不正确。看一下如何将socket.io与http服务器一起使用的示例:Nodejs & socket io : warn - error raised: Error: listen EADDRINUSE