Node.js将javascript连接到app.js

时间:2014-04-05 12:24:29

标签: javascript node.js

这是一个非常简单的问题,但我对Node非常陌生,我现在正在阅读所有初学者指南,所以不需要指导我们!指南告诉你如何使用节点而不是如何让事情发挥作用!

我发现node.js教程假定了太多的知识和设置。

我的app.js文件包含:

服务器端

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

// New Code

var mongo = require('mongojs');
var db = mongo('site');
var app = express();

// all environments
app.set('port', process.env.PORT || 80);
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}



app.get('/libraries/*', function(req, res){
    req.url.replace('/libraries', ''); // remove libraries prefix
    var path = req.url.split("/libraries").pop();
    console.log(path);
    switch (path) {
        case '/socket.io/socket.io.js':
            res.sendfile('node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js');
            break;
    }

});

// setup server
var server = http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

// setup socket
var io = require('socket.io').listen(server);

客户端:

var socket = io.connect();
socket.on('ready', function (data) {
    marketData = data; // raw data from the DB 
});

一切都很好。

我想将日志'test'安装到网站控制台中。

我的假设是我定义了一个功能服务器端并将其称为客户端...我到底该怎么做?!?!

我只是希望他们互相交谈。

服务器端我想定义一个var并将其称为客户端。

我的假设:

服务器端:

function test () {
console.log ('test');
}

客户方:

test();

我网站上的控制台说:'test'。

2 个答案:

答案 0 :(得分:1)

想要与Socket.io进行通信,请添加到服务器脚本的底部:

io.sockets.on('connection', function (socket) {
    // Do what you need to do here and finally emit "read"
    // here setTimeout simulates your database query or similar
    // process of building the data you want to send to the client
    setTimeout(function (data) {
        socket.emit('ready', data);
    }, 1000);
});

然后在客户端有:

var socket = io.connect();
socket.on('ready', function (data) {
    marketData = data; // raw data from the DB 
    test();
});

当您的客户端连接时,服务器将运行您的业务逻辑并通过向客户端发送“就绪”事件来发回数据。我在您的客户端事件处理程序中添加了对test()的调用,这可能有助于理解该过程。

答案 1 :(得分:0)

要获得javascript(客户端)与服务器之间的连接,以下内容应该可以正常工作:

客户方:

socket.on('news', function (data) {
  console.log(data);
});

服务器端:

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
});

控制台是否会记录您的数据,这是一个对象{hello:' world' }