将 expressjs 与 node-webkit 一起使用时使用 EADDRINUSE
EADDRINUSE when using expressjs with node-webkit
我想将 nw.js 用作独立的套接字客户端和服务器。我正在尝试将来自 socket.io 网站的 sample socket.io 聊天应用程序放入 nw.js 应用程序。但是当我开始 nw.js 时,出现以下错误:
[5591:0222/143044:ERROR:nw_shell.cc(325)] Error: listen EADDRINUSE :::3000
at Object.exports._errnoException (util.js:734:11)
at exports._exceptionWithHostPort (util.js:757:20)
at Server._listen2 (net.js:1153:14)
at listen (net.js:1179:10)
at Server.listen (net.js:1266:5)
at Object.<anonymous> (/Users/xxxx/nwjs/chat-example/index.js:23:6)
at Module._compile (module.js:451:26)
at Object.Module._extensions..js (module.js:469:10)
at Module.load (module.js:346:32)
at Function.Module._load (module.js:301:12)
我尝试了多个端口并且 none 成功了。
这是我用于服务器的代码,与 socket.io 指南提供的大部分相同。
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('chat message', function(msg){
console.log('message: ' + msg);
io.emit('chat message', msg);
});
});
http.listen( 3000, function(){
console.log('listening on *:3000');
});
这是我的 package.json nw.js
{
"name": "socket-chat-example",
"version": "0.0.1",
"description": "my first socket.io app",
"dependencies": {
"express": "^4.10.2",
"socket.io": "^1.3.4"
},
"main": "index.html",
"node-main": "index.js"
}
我的nwjs版本:v0.12.0-alpha3-osx-x64
查看 node-webkit-express 的工作示例。
我无法解释原因,但通过 "node-main" 启动 express 是导致问题的原因。可能是多进程问题什么的。。。不过你可以的。
每次您的应用程序 window 重新加载、刷新或打开新的 window 时,node-main
脚本都是 运行。
基本上,您希望将服务器脚本作为 bg-script
启动。这是 manifest docs。后台脚本是 运行 once 而应用程序是 运行ning,所以是你应该启动服务器的地方。
您可能还想听听 nwjs window close event 以便在应用程序关闭时您可以正确地关闭服务器并进行清理。
我想将 nw.js 用作独立的套接字客户端和服务器。我正在尝试将来自 socket.io 网站的 sample socket.io 聊天应用程序放入 nw.js 应用程序。但是当我开始 nw.js 时,出现以下错误:
[5591:0222/143044:ERROR:nw_shell.cc(325)] Error: listen EADDRINUSE :::3000
at Object.exports._errnoException (util.js:734:11)
at exports._exceptionWithHostPort (util.js:757:20)
at Server._listen2 (net.js:1153:14)
at listen (net.js:1179:10)
at Server.listen (net.js:1266:5)
at Object.<anonymous> (/Users/xxxx/nwjs/chat-example/index.js:23:6)
at Module._compile (module.js:451:26)
at Object.Module._extensions..js (module.js:469:10)
at Module.load (module.js:346:32)
at Function.Module._load (module.js:301:12)
我尝试了多个端口并且 none 成功了。 这是我用于服务器的代码,与 socket.io 指南提供的大部分相同。
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
socket.on('chat message', function(msg){
console.log('message: ' + msg);
io.emit('chat message', msg);
});
});
http.listen( 3000, function(){
console.log('listening on *:3000');
});
这是我的 package.json nw.js
{
"name": "socket-chat-example",
"version": "0.0.1",
"description": "my first socket.io app",
"dependencies": {
"express": "^4.10.2",
"socket.io": "^1.3.4"
},
"main": "index.html",
"node-main": "index.js"
}
我的nwjs版本:v0.12.0-alpha3-osx-x64
查看 node-webkit-express 的工作示例。
我无法解释原因,但通过 "node-main" 启动 express 是导致问题的原因。可能是多进程问题什么的。。。不过你可以的。
每次您的应用程序 window 重新加载、刷新或打开新的 window 时,node-main
脚本都是 运行。
基本上,您希望将服务器脚本作为 bg-script
启动。这是 manifest docs。后台脚本是 运行 once 而应用程序是 运行ning,所以是你应该启动服务器的地方。
您可能还想听听 nwjs window close event 以便在应用程序关闭时您可以正确地关闭服务器并进行清理。