使用NodeJS和Socket.io的聊天服务器

时间:2014-06-19 17:36:27

标签: node.js sockets

我已经为服务器写了这个脚本

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

server.listen(3000);

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

io.sockets.on('connection' , function(socket){
    socket.on('send message' , function(data){
        io.sockets.emit('new message' , data);
    });
});

这就是聊天页面

<html>
<head>
<title>Chat Program</title>
<style>
#chat{
height:400px;
}
</style>

    <script src="http://code.jquery.com/jquery-latest-min.js"></script>
    <script src="/node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>
    <script>
        jQuery(function($){
            var socket = io.connect();
            var $messageform = $('#send-message');
            var $messagebox = $('#message');
            var $chat = $('#chat');

            $messageform.submit(function(e){
                e.preventDefault();
                socket.emit('send message' , $messagebox.val());
                $messagebox.val("");
            });

            socket.on('new message' , function(data){
                $chat.append(data + "<br/>");
            });
        });
    </script>
</head>
<body>
    <div id="chat"></div>
    <form id="send-message">
        <input size="35" id="message"></input>
        <input type="submit"></input>
    </form>
</body>
</html>

当我从控制台运行脚本时它运行良好但是当我在聊天框中写东西时没有任何事情发生...我不知道为什么但是我认为我从&#34; npm install socket.io-client&#34;有问题。

此行==&gt; <script src="/node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>我认为问题在这里,因为整个代码是正确的(我认为)

提示:我是Node.js初学者

1 个答案:

答案 0 :(得分:0)

您没有明确配置为文件提供服务。你有2个选择。你可以:

  1. 配置express以明确地提供该文件

    将此添加到您的应用文件中:

    app.get('/socket.io.js' , function(req,res){
        res.sendfile(__dirname + '/node_modules/socket.io/node_modules/socket.io-client/socket.io.js');
    });
    

    并将您的html脚本切换为:

    <script src="/socket.io.js"></script>
    
  2. 将Express配置到服务器目录中的任何文件(参见this