【问题标题】:Node Express 3x socket IO testingNode Express 3x socket IO 测试
【发布时间】:2013-10-05 18:17:46
【问题描述】:

我尝试将套接字 IO 添加到我的项目中,但未能成功。

我的 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');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
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('/', routes.index);
app.get('/users', user.list);

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


  //IO Config

var io = require("socket.io").listen(server);
io.sockets.on('connection', function (socket) {
    socket.emit('makealert');
});

我的观点:

extends layout

script(type='text/javascript' src='../node_modules/socket.io/lib/socket.io.js')

script(type='text/javascript'
  var socket = io.connect();
  socket.on('makealert', function () {
      alert('Boom');
  });
)

block content
  h1= title
  p Welcome to #{title}

我的路线:

exports.index = function(req, res){
  res.render('index', { title: 'Express' });
};

我有两个问题: -首先找到socket.io.js的方法是什么(在玉视图中) -第二,我的 app.js 好吗? -第三,我的控制台说:

语法错误: 节点/thrid_app/demo-express/views/index.jade:5 3|脚本(类型='文本/javascript' src='../node_modules/socket.io/lib/socket.io.js') 4|

5|脚本(类型='文本/javascript' 6| var socket = io.connect(); 7| socket.on('makealert', function () {

Ty 对你有帮助

【问题讨论】:

  • 嗨,就在我找到这个并且它有效之后......所以我独自寻找问题,并为一些需要的人发帖。 [Github 项目][1][1]:github.com/naholyr/node-chat-socketio-handshake
  • 只是一个建议。我会使用 EJS 而不是 Jade 。防止解析错误。
  • socket.io 客户端代码位于/socket.io/socket.io.js(因此您不需要包含/node_modules/ 等)

标签: javascript node.js express socket.io


【解决方案1】:

您提到的错误是由于jade中的语法错误

改变这一行

script(type='text/javascript'
  var socket = io.connect();
  socket.on('makealert', function () {
      alert('Boom');
  });
)

script(type='text/javascript')
  var socket = io.connect();
  socket.on('makealert', function () {
      alert('Boom');
  });

【讨论】:

    【解决方案2】:

    您的代码中存在一些错误,而且您似乎使用的是旧的玉语法。

    1. script(type='text/javascript' src='../') 中缺少逗号。应该是script(type='text/javascript', src='../')
    2. 自jade 0.31起,script必须作为script.script(...).使用。 style 也是如此。
    3. 您在视图中的最后一个脚本标签关闭不正确

      script(type='text/javascript'
      ...
      )
      

      应该是这样的

      script(type='text/javascript')
      ...
      

    【讨论】:

    • 我中止了,求帮助,但对我来说似乎太深了。
    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 2018-12-13
    • 2014-10-18
    • 2015-12-24
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2013-04-20
    相关资源
    最近更新 更多