Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js将web和移动api与套接字连接_Node.js_Api_Sockets_Websocket_Socket.io - Fatal编程技术网

使用node.js将web和移动api与套接字连接

使用node.js将web和移动api与套接字连接,node.js,api,sockets,websocket,socket.io,Node.js,Api,Sockets,Websocket,Socket.io,我是节点和套接字编程新手 我的项目要求是这样的 一个服务器,其中包含一组问题和一组活动。活动包含问题。管理员将启动或停止活动 一旦活动开始,Web应用程序的前端将仅显示问题,移动应用程序将显示问题的答案,并且问题将在Web和移动应用程序中每隔X秒自动重新加载 我尝试了websocket和socket.io这对于web应用程序的需求来说非常有效。但我不知道移动API是什么 下面是socket.io的代码 server.js var mysql = require('mysql'); // Let’

我是节点和套接字编程新手

我的项目要求是这样的

一个服务器,其中包含一组问题和一组活动。活动包含问题。管理员将启动或停止活动

一旦活动开始,Web应用程序的前端将仅显示问题,移动应用程序将显示问题的答案,并且问题将在Web和移动应用程序中每隔X秒自动重新加载

我尝试了websocketsocket.io这对于web应用程序的需求来说非常有效。但我不知道移动API是什么

下面是socket.io的代码

server.js

var mysql = require('mysql');
// Let’s make node/socketio listen on port 3000
var io = require('socket.io').listen(3000);
// Define our db credentials
var db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '****',
    database: 'database_name'
});
// Log any errors connected to the db
db.connect(function (err) {
    if (err)
        console.log(err);
});
// Define/initialize our global vars
var questions = [];
var total_question = 0;
var isInitNotes = false;
var count = 0;
var sql = "";

// call once per connection, create new connection
io.sockets.on('connection', function (socket) {
    console.log((new Date()) + ' Connection from origin ' + socket.handshake.headers.origin);
    //io.sockets.emit('users connected', socketCount)
    socket.on('disconnect', function () {
        console.log((new Date()) + ' Disconnected from origin ' + socket.handshake.headers.origin);
    });

    db.query('SELECT COUNT(vQuestion) as total_question FROM questions')
            .on('result', function (data) {
                // Push results onto the questions array
                total_question = data.total_question;
            });

    // select questions from DB
    var questionInterval = setInterval(function () {
        // check condition for question is over or not
        if (count < total_question) {
            sql = 'SELECT vQuestion FROM questions LIMIT ' + count + ',1';
            console.log(sql);
            db.query(sql)
                    .on('result', function (data) {
                        // Push results onto the questions array
                        questions.pop();
                        questions.push(data);
                    })
                    .on('end', function () {
                        // Only emit questions after query has been completed
                        socket.emit('get questions', questions);
                    });
            count++;
        } else {
            clearInterval(questionInterval);
        }
    }, 5000);
    isInitNotes = true;
});
var mysql=require('mysql'); //让我们让node/socketio监听端口3000 var io=require('socket.io')。侦听(3000); //定义我们的数据库凭证 var db=mysql.createConnection({ 主机:“localhost”, 用户:'根', 密码:'**', 数据库:'数据库名称' }); //记录连接到数据库的所有错误 数据库连接(功能(错误){ 如果(错误) 控制台日志(err); }); //定义/初始化我们的全局变量 var问题=[]; var总问题=0; var isInitNotes=false; var计数=0; var-sql=“”; //每个连接调用一次,创建新连接 io.sockets.on('connection',函数(socket){ console.log((new Date())+'Connection from origin'+socket.handshake.headers.origin); //io.sockets.emit('已连接的用户',socketCount) socket.on('disconnect',function(){ console.log((new Date())+'Disconnected from origin'+socket.handshake.headers.origin); }); db.query('选择COUNT(vQuestion)作为来自问题的总问题') .on('result',函数(数据){ //将结果推送到问题数组中 总问题=数据。总问题; }); //从数据库中选择问题 var questionInterval=setInterval(函数(){ //检查问题的条件是否结束 如果(计数<总问题){ sql='从问题限制中选择vQuestion'+计数+',1'; console.log(sql); 数据库查询(sql) .on('result',函数(数据){ //将结果推送到问题数组中 problems.pop(); 问题。推送(数据); }) .on('end',函数(){ //仅在查询完成后发出问题 发出('get questions',questions'); }); 计数++; }否则{ clearInterval(问题间隔); } }, 5000); isInitNotes=true; }); Index.html

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script>
$(document).ready(function(){
    // Connect to our node/websockets server
    var socket = io.connect('http://localhost:3000');

    // Initial set of questions, loop through and add to list
    socket.on('get questions', function(data){
        var html = ''
        for (var i = 0; i < data.length; i++){
            // We store html as a var then add to DOM after for efficiency
            html += '<li>' + data[i].vQuestion + '</li>'
        }
        $('#questions').append(html)
    })
})
</script>
<ul id="questions"></ul>
<div id="usersConnected"></div>

$(文档).ready(函数(){
//连接到我们的节点/websockets服务器
var socket=io.connect('http://localhost:3000');
//初始问题集,循环并添加到列表中
socket.on('get questions',函数(数据){
var html=''
对于(变量i=0;i'
}
$(“#问题”).append(html)
})
})
    服务器命令

    node server.js

    2016年10月21日星期五10:30:35 GMT+0530(IST)从原点连接

    网络浏览器(网络应用程序)

    /index.html

    每5秒显示一个问题

    在我的例子中,只有一个web应用程序会在那里,但会有多个移动用户同时连接