小编mdv*_*mdv的帖子

Socket.io在Express Route上发出

我想在调用一些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

node.js express socket.io

11
推荐指数
2
解决办法
2万
查看次数

将自定义文本传递到新的Facebook Sharer按钮

我需要将一些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

6
推荐指数
1
解决办法
1万
查看次数

jQuery AJAX调用Passportjs登录Express(nodejs)框架

我正在尝试使用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)

ajax jquery node.js express passport.js

6
推荐指数
1
解决办法
8988
查看次数

Gruntjs与grunt-nodemon,watch和jshint

我正在尝试使用这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)

node.js gruntjs nodemon

5
推荐指数
1
解决办法
5037
查看次数

ExpressJS摩根仅记录路线请求

我使用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)

而不是路线所需的资产.

提前致谢.

css node.js express

4
推荐指数
1
解决办法
2208
查看次数

Expressjs重定向到https(使用Cloudflare Flexible SSL)

即时通讯使用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)

有人能指出我正确的方向吗?

提前致谢.

https node.js express

3
推荐指数
1
解决办法
2262
查看次数

NodeJS导出变量

我正在编写一个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那两个变量值总是" 未定义 ".

有人能指出我正确的方向吗?

提前致谢.

javascript node.js

3
推荐指数
1
解决办法
2万
查看次数