无法运行Node.js服务器文件

时间:2014-04-22 06:20:34

标签: node.js

我是Node.js的新手。 我有我的NodeServer.js文件,其中包含以下代码。

var express = require("express");
var app = express();
var port = 60000;

var io = require('socket.io').listen(app.listen(port));
console.log("Listening on port " + port);

io.sockets.on('connection', function (socket) {
    socket.emit('message', { message: 'welcome to the chat' });
    socket.on('send', function (data) {
        io.sockets.emit('message', data);
    });
});

当我从命令提示符运行此命令时,通过以下代码

D:\Path to my application>Node NodeServer.js

显示消息

   info  - socket.io started
   Listening on port 60000

但是当我尝试通过http://127.0.0.1:60000从浏览器连接到此端口时,它会在命令提示符下显示以下错误

D:\Path to my application\node_modules\expres
s\lib\application.js:119
  this._router.handle(req, res, function(err) {
               ^
TypeError: Cannot call method 'handle' of undefined

我做错了什么?

以上问题已解决:

以下是我的编辑

以下是我的客户端脚本

$(document).ready(function () {   

    var socket = io.connect('http://127.0.0.1:60000');

});

以下是我的设计

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="jquery-1.10.1.min.js" type="text/javascript"></script>
    <script src="http://127.0.0.1:60000/socket.io/socket.io.js" type="text/javascript"></script>
    <script src="NodeClient.js" type="text/javascript"></script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

当我运行我的应用程序时,我收到错误"NetworkError: 404 Not Found - http://127.0.0.1:60000/socket.io/socket.io.js"

2 个答案:

答案 0 :(得分:0)

我已通过以下步骤解决了我的问题。

  1. 我将ClientScript移动到一个特定的文件夹(脚本)。(假设我的客户端脚本的名称是NodeClient.js)
  2. 我从服务器脚本中删除了app.get("/", function(req,res){ your logic should go here });函数。
  3. 在代码app.use(express.static(__dirname + '/Scripts'));
  4. 下面添加了

    现在它按照我想要的方式工作。 我不知道这是否正确,但它现在正在为我工​​作。

答案 1 :(得分:0)

更改以下行

 var io = require('socket.io').listen(app.listen(port));

通过

 var io = require('socket.io').listen(port);

app.listen(port)返回一个对象,但是我们必须在同一个端口运行socket.io并表达。为此,只需传递端口变量

即可