我想在调用一些API路由时向客户端发出一些数据.我必须在server.js上关注代码
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
console.log('a user connected');
socket.emit('tx', 'msg');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
Run Code Online (Sandbox Code Playgroud)
现在我有这条路线/测试:
var bsg = require('./routes/test');
Run Code Online (Sandbox Code Playgroud)
那个档案:
var express = require('express');
var passport = require('passport');
var router = express.Router();
router.get('/test', function(req, res) {
//work here
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
在客户端:
<script type="text/javascript">
var socket = io();
socket.on('tx', function(data) {
console.log(data);
});
</script>
Run Code Online (Sandbox Code Playgroud)
什么是最好的解决方案?
谢谢!
Express 4/socket.io 1.4.5
我需要将一些AngularJS变量从我的应用程序传递到新的Facebook sharer按钮,我正在使用:
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/es_LA/all.js#xfbml=1&appId=1438439249728371";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
Run Code Online (Sandbox Code Playgroud)
还有这个:
<div class="fb-share-button" data-href="http://mySite" data-type="button"> </div>
Run Code Online (Sandbox Code Playgroud)
我可以在哪里放置自定义文本以在对话框中共享?
谢谢!
javascript facebook facebook-sharer facebook-javascript-sdk angularjs
我正在尝试使用AJAX在Express应用程序上使用Passport库调用登录验证.我使用这样的本地策略:
router.post('/login', function(req, res, next) {
passport.authenticate('loginUsers', function(err, user, info) {
if (err) {
return next(err);
}
// if user is not found due to wrong username or password
if (!user) {
//return res.render('login', {});
res.json({detail: info});
}//(!user)
//passport.js has a logIn user method
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.render('account', {});
}); //req.logIn
})(req, res, next);
});
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何将变量传递给Passport,模拟bodyparser.json()功能,我试图做这样的事情:
$(document).ready(function() {
$('form').submit(function() {
$.ajax({
type:'POST',
url:'/login',
data: {username: $('#us').val(), password: $('#pass').val()},
success:function(result){
if(!result){
//$('form input[name="username"]').css("background-color", "red"); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用这3个插件运行GruntJS,因此它可以监视更改并首先:lint文件然后重新加载快速服务器.我在下面的配置问题是,如果jshint lint文件,nodemon不运行,反之亦然.
// Gruntfile.js
// our wrapper function (required by grunt and its plugins)
// all configuration goes inside this function
module.exports = function(grunt) {
// ===========================================================================
// CONFIGURE GRUNT ===========================================================
// ===========================================================================
grunt.initConfig({
// get the configuration info from package.json ----------------------------
// this way we can use things like name and version (pkg.name)
pkg: grunt.file.readJSON('package.json'),
// all of our configuration will go here
// configure jshint to validate js files -----------------------------------
jshint: {
options: …Run Code Online (Sandbox Code Playgroud) 我使用NodeJS Web框架Expressjs和一个中间件将请求记录到文件(摩根).
我的conf:
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/logs/access.log', {flags: 'a'})
// setup the logger
app.use(logger('short', {stream: accessLogStream}))
Run Code Online (Sandbox Code Playgroud)
我的日志看起来像:
192.168.1.3 - GET /signup HTTP/1.1 304 - - 19.194 ms
192.168.1.3 - GET /assets/css/admin/module.admin.stylesheet-complete.sidebar_type.collapse.no_min2.css HTTP/1.1 304 - - 15.500 ms
192.168.1.3 - GET /assets/components/library/jquery/jquery.min.js?v=v1.0.3-rc2&amb;sv=v0.0.1.1 HTTP/1.1 304 - - 14.244 ms
Run Code Online (Sandbox Code Playgroud)
有没有办法只记录路由请求?例如,如果用户输入/ signup /:
192.168.1.3 - GET /signup HTTP/1.1 304 - - 19.194 ms
Run Code Online (Sandbox Code Playgroud)
而不是路线所需的资产.
提前致谢.
即时通讯使用Expressjs(NodeJS框架),我想将所有流量重定向到https,我不使用SSL证书,但Cloudflare灵活的ssl.
我正在使用这个中间件:
//FORCE SSL
app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
next();
});
Run Code Online (Sandbox Code Playgroud)
我以这种方式启动应用程序:
//Firing Up express
//====================================================================
app.set('port', process.env.PORT || 80);
var server = app.listen(app.get('port'), function() {
console.log('[-]');
console.log(('[+] Express server listening on port '+ server.address().port).green);
console.log('[-]');
});
Run Code Online (Sandbox Code Playgroud)
应用程序重定向到https://但无法加载
谷歌Chrome控制台说:
Failed to load resource: net::ERR_CONNECTION_REFUSED https://beta.domain.io/
Failed to load resource: net::ERR_CONNECTION_CLOSED https://beta.domain.io/
Failed to load resource: net::ERR_CACHE_MISS
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
提前致谢.
我正在编写一个nodejs模块,我需要将主文件中的变量数据传递给函数,我这样做:
var region;
var api_key;
exports.region = region;
exports.api_key = api_key;
module.exports = {
getSummonerId: function(sum, callback) {
var summoners = {};
var summoner = sum.replace(/\s+/g, '');
request("https://na.api.pvp.net/api/lol/"+region+"/v1.4/summoner/by-name/"+summoner+"?api_key="+api_key, function(error, response, body) {
summoners[summoner] = JSON.parse(body);
callback(summoners[summoner][summoner].id);
});
}
}
Run Code Online (Sandbox Code Playgroud)
并在主文件中:
var lol = require('./apiwrapper.js');
lol.api_key = "example";
lol.region = "las";
lol.getChampions(function(data) {
console.log(data);
})
Run Code Online (Sandbox Code Playgroud)
但是从apiwrapper.js那两个变量值总是" 未定义 ".
有人能指出我正确的方向吗?
提前致谢.