试图让Node.js示例应用程序正常工作

时间:2013-03-19 23:27:00

标签: javascript node.js express

我正在尝试运行一个使用node.js,express和socket.io的基本聊天应用程序。 我已成功地将所有内容运行到我在服务器端或客户端没有出现任何错误的位置。但是,该应用程序不起作用 我应该能够打开两个浏览器窗口并与自己聊天。我输入文本框向自己发送聊天消息,但没有收到任何消息。我很确定也没发送任何内容。使用FireBug我没有看到通过网络发送任何新请求。但是,使用Firebug我还会看到所有请求的包含文件都正确地提供给浏览器。只有三个 - index.html,socket.io.js和jquery.min.js。

以下是我正在使用的教程的链接: http://philmunt.com/post/15643013618/node-js-socket-io-chat-application-tutorial

使用server.js文件我稍微修改了它以使其正常工作。主要问题是我的浏览器没有收到socket.io.js所以我添加了一个路径,允许server.js知道它在哪里。像这样: app.get('/ sio / socket.io.js',function(req,res){........ 这可能是我的问题吗?

这是服务器代码 - server.js:

var express = require('express'), app = express(), http = require('http'), server = http.createServer(app), io = require('socket.io').listen(server);

// listen for new web clients:
server.listen(8080);

app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});         

app.get('/sio/socket.io.js', function (req, res) {
res.sendfile('/root/nodejs/node-v0.10.0/node_modules/socket.io/lib/socket.io.js');
});     

io.sockets.on('connection', function (socket) { socket.on('sendMessage', function (data) { socket.broadcast.emit('message', data); socket.emit('message', { text: '<strong>'+data.text+'</strong>' });   
 });   
 });

这是index.html文件:

<html> 
  <body>
    <script src="/sio/socket.io.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script>
      $(document).ready(function () {
        var socket = io.connect('http://localhost');
        socket.on('message', function (data) {
          $('#chat').append(data.text + '<br />');
        });

        $('#send').click(function () {
          socket.emit('sendMessage', { text: $('#text').val() });
          $('text').val('');
        });

      });
    </script>

    <div id="chat" style="width: 500px; height: 300px; border: 1px solid black">

    </div>    

    <input type="text" name="text" id="text">
    <input type="button" name="send" id="send" value="send">
  </body>
</html> 

1 个答案:

答案 0 :(得分:0)

删除app.get(socketstuff)部分,您不需要它,因为js文件可供您使用

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

并将套接字变量更改为:

var socket = io.connect();