使用socket.io在NodeJS Application中添加聊天功能

时间:2016-06-18 17:15:14

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

我创建了一个NodeJS服务器,它有6个不同的端点,所有这些端点都在我的SQL数据库上执行基本的CRUD操作。现在我需要在此服务器上创建一个聊天功能,该功能应该托管在同一服务器的第9个端点上(因为聊天还需要使用相同的SQL服务器执行一些CRUD操作)

以下是我的项目结构:

> bin
   - www
>js
   - common JS files
>node_modules
   - all node dependencies
>routes
   - endpoint_1
   - endpoint_2
   - endpoint_3
   - endpoint_4
   - endpoint_5
   - endpoint_6
   - chatEndPoint
- app.js 

我已经通过展示HERE进行了聊天应用程序演示,源代码提到了HERE

this source code只有在我有聊天功能时才能工作,但现在我有不同的项目结构,而且我无法正确运行应用程序。

我不知道如何管理依赖项和实现

我在哪里放置以下代码:(关于我的项目结构)

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

我在哪里粘贴处理连接和聊天消息的代码:

io.on('connection',function(socket){
    console.log('one user connected '+socket.id);
    socket.on('message',function(data){
        var sockets = io.sockets.sockets;
        /*sockets.forEach(function(sock){
            if(sock.id != socket.id)
            {
                sock.emit('message',data);
            }
        })*/
        socket.broadcast.emit('message', data);
    })
    socket.on('disconnect',function(){
        console.log('one user disconnected '+socket.id);
    })
})

我的服务器已在端口(3881)上运行,因此我需要在另一个端口上侦听此聊天功能。

如何配置我的app.js文件以使用和路由我的/chatEndPoint

1 个答案:

答案 0 :(得分:0)

这需要放在app.js文件的最顶层:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on.connection函数在app.js中的所有路由之后执行,并且所有套接字函数都在其中。阅读This以设置socket.io。另外我建议你在根目录下有一个package.json文件。见this。不,你不应该改变端口。我还建议在你的root中创建一个views文件夹,在这里存储你的html文件。如果您的路由有单独的.js文件,则将它们存储在routes文件夹中。