Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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将javascript连接到app.js_Javascript_Node.js - Fatal编程技术网

Node.js将javascript连接到app.js

Node.js将javascript连接到app.js,javascript,node.js,Javascript,Node.js,这是一个超级简单的问题,但我对Node真的很陌生,我现在正在阅读所有的初学者指南,所以不需要指导我去了解他们!指南会告诉你如何使用节点,而不是如何让它工作 我发现node.js教程假设了太多的知识和设置 我有我的app.js文件,其中包含: 服务器端 /** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var user = require('./r

这是一个超级简单的问题,但我对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.on('news', function (data) {
  console.log(data);
});

“我的网站”上的控制台显示:“测试”。

如果要使用Socket.io进行通信,请在服务器脚本的底部添加:

然后,在客户端有:


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

要在javascript(客户端)和服务器之间建立连接,以下操作应该有效:

客户端:

test();
socket.on('news', function (data) {
  console.log(data);
});
服务器端:

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

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

到目前为止,您得到的是客户端和服务器之间的套接字连接。如果这就是您想要用于通信的内容,那么您需要在两者之间定义一个“协议”,以便您可以从客户端发送命令,服务器将解析发送的内容,然后知道该做什么。没有默认协议。因此,基本上,您需要在服务器上编写代码来检查客户端发送的内容,并根据客户端发送的内容决定要执行的操作。谢谢你的回复。这稍微涉及到我假定的知识点。我不知道如何定义“协议”或如何定义或解析是什么?目前,我不想检查客户端发送的任何内容,我只想让客户端发出一个函数(console.log('test'))并让客户端javascript能够运行该函数。这实际上是让客户机和服务器对话的第一步。感谢您的回复:)抱歉,我已经在node上挣扎了几个星期,我迷路了,只想找个立足之地。这里最简单的例子是,您从客户端向服务器发送一些文本。您在服务器上接收数据,然后查看客户端发送的内容。如果它发送“x”,则触发动作“y”。在您的情况下,如果它发送了“test”,则调用
test()
。据我所知,web套接字中并没有像您所期待的那样内置远程过程调用功能。您必须编写自己的原语,它只检查客户端发送的内容,然后根据它发送的内容决定要做什么。这只不过是服务器上的一些
if
语句,并在客户端发送数据。看看这些示例:谢谢,我将通过这些链接阅读,它们似乎越来越接近我想要的内容,谢谢时间