簡體   English   中英

Node.js將JavaScript連接到app.js

[英]Node.js connect javascript to app.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 
});

一切都很好。

我想將“測試”控制台登錄到網站控制台。

我的假設是我定義一個功能服務器端,並將其稱為客戶端端...到底該怎么做?!?!

我只希望他們彼此交談。

服務器端我想定義一個var並將其稱為客戶端。

我的假設:

服務器端:

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

客戶端:

test();

我網站上的控制台上說:“測試”。

解釋要與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()的調用,這可能有助於理解該過程。

要在您的javascript(客戶端)和服務器之間建立連接,以下方法應該可以工作:

客戶端:

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

服務器端:

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

將控制台記錄您作為對象的數據{hello:'world'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM