尝试使用Express.js和Socket.io制作聊天机器人

时间:2017-05-11 12:28:00

标签: javascript node.js sockets express socket.io

所以,我一直在尝试使用Node.js,express,js和socket.io编写这个聊天应用程序一段时间,一切运行良好。除了我正在尝试包括一个名为史蒂夫的机器人。史蒂夫的目的是欢迎你来聊天,或者在你加入并自我介绍之后让他加入。以及能够回复一些“命令”。嗨,你好吗等等。

但那部分是我无法开始工作的部分。

我不是要求你为我编写代码。但如果你能告诉我,如果我走在正确的轨道上,可能会有一些想法,提示等等。我被卡住了。

提前致谢。

这是我的index.js

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
users = [];
connections = [];

server.listen(process.env.PORT || 3000);
  console.log('Server running...');

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

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

io.sockets.on('connection', function(socket) {
  connections.push(socket);
  console.log('Connected: %s sockets connected', connections.length);

  // Disconnect
  socket.on('disconnect', function(data) {
    users.splice(users.indexOf(socket.username), 1);
    updateUsernames();
    connections.splice(connections.indexOf(socket), 1);
    console.log('Disconnected: %s sockets connected', connections.length);
  });

  // Send Message
  socket.on('send message', function(data) {

    io.sockets.emit('new message', {msg: data, user: socket.username});
  });
<code>
  // New User

  socket.on('new user', function(data, callback){
    callback(true);
    socket.username = data;
    users.push(socket.username);
    updateUsernames();
  });

  function updateUsernames() {
    io.sockets.emit('get users', users);
  }
});

这是我的script.js

$(function () {
    var socket = io.connect();
    var $messageForm = $('#messageForm');
    var $message = $('#message');
    var $chat = $('#chat');
    var $messageArea = $('#messageArea');
    var $userFormArea = $('#userFormArea');
    var $userForm = $('#userForm');
    var $users = $('#users');
    var $username = $('#username');
    var name = 'Steve', adress = 'localhost:3000', socket;


       function join(){
            socket.on('new user', name);
            socket.emit('message', "Hi! I am Steve. Steve the Chatter!");
            socket.on('new message', listener);
        };

        function listener(data){
            if(data.message=='Hi')
                socket.emit('message', 'Hi, '+$username+'.');
        };

     join();   

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

    socket.on('new message', function(data) {
        $chat.append('<div class="well"><strong>'+data.user+'</strong>: '+data.msg+'</div>');
    });

    $userForm.submit(function(e) {
        e.preventDefault();
        socket.emit('new user', $username.val(), function(data) {
            if(data) {
                $userFormArea.hide();
                $messageArea.show();
            }
        });
        $username.val('');
    });

    socket.on('get users', function(data) {
        var html = '';
        for(i = 0;i < data.length;i++){
            html += '<li class="list-group-item">'+data[i]+'</li>'
                ;
        }
        $users.html(html);
    });



});

0 个答案:

没有答案