无法在node.js中使用express运行客户端服务器

时间:2013-03-22 02:27:12

标签: node.js express socket.io

嘿,我刚刚开始修补node.js并且是一个完整的菜鸟。我正在尝试使用socket.io和express进行简单的客户端服务器通信(我之前从未使用过这些)。

这是我的应用程序代码(app.js):

var     sys         = require('sys'),
        express     = require('express'),

        app         = express('localhost');
        http    = require('http'),
        server  = http.createServer(app),

        io          = require('socket.io').listen(server);

app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
    res.send('Hello World');
});

app.listen(3000);

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

socket.on('connection', function (client){ 
  // new client is here!
  setTimeout(function () {
        client.send('Waited two seconds!');
    }, 2000);

  client.on('message', function () {
  }) ;

  client.on('disconnect', function () {
  });
});

这是我的客户端代码(client.html):

<html>
<p id="text">socket.io</p>

<script src="/socket.io/socket.io.js"></script> 


<script> 
    $(document).ready(function(){

        var socket  = new io.Socket(),
                text        = $('#text');

        socket.connect();

        socket.on('connect', function () {
            text.html('connected');
        });

        socket.on('message', function (msg) {
            text.html(msg);
        });

        socket.on('disconnect', function () {
            text.html('disconnected');
        });

    });
</script> 

我从以下代码获得了大部分代码: NodeJS + socket.io: simple Client/Server example not working

并将其更改为与express 3.x

兼容

然而,当我运行服务器并使用chrome打开我的客户端时,它告诉我它无法运行 加载资源文件:///socket.io/socket.io.js

我已经使用npm

安装了express和socket.io

我也阅读了至少20篇类似的帖子,但未能找到答案

请帮帮我。谢谢

2 个答案:

答案 0 :(得分:2)

socket.io.js文件需要从端口3000提供,如localhost:3000。 所以这就是你做的改变 <script src="/socket.io/socket.io.js"></script>

<script src="http://localhost:3000/socket.io/socket.io.js"></script>

答案 1 :(得分:0)

您是否直接从本地文件系统打开client.html页面?对socket.io.js的请求应该看起来像http://localhost/socket.io/socket.io.js而不是file:///socket.io/socket.io.js