节点js,如何将Socket.io和胡子结合起来

节点js,如何将Socket.io和胡子结合起来

问题描述:

Socket.io可以在普通的html页面中使用,但是它不能用在胡子页面中吗?节点js,如何将Socket.io和胡子结合起来

例如:

app.js

var app = express(); 
app.use(express.static(path.join(__dirname, 'public'))); 
// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'mustache'); // name your templates 
app.engine('mustache', require('hogan-middleware').__express); 
var routes = require('./routes/index'); 
app.use('/', routes); 

路由\ index.js

var express = require('express'); 
var router = express.Router(); 
var app = express(); 
var server = require('http').Server(app); 
var io = require('socket.io').listen(server); 
var request = require('request'); 
var serialport = require('serialport'); 
var Serialport = serialport; 

router.get('/machine_mode', function(req, res, next) { 

    res.render('machine_mode', { title: 'test' }); 
}); 

io.sockets.on('connection',function(socket){ 
    var str='hello'; 
    io.sockets.emit('view',str); 
}); 

视图\ test.mustache

<body> 
    </body> 
    <script src="/js/jquery-1.9.1.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
    jQuery(function($){ 
     var socket = io.connect(); 
     socket.on('str',function(data){ 

     }) 

    }); 

测试页面错误: 不能得到

http://localhost:8001/socket.io/socket.io.js 

app.js

var express = require('express'); 
var router = express.Router(); 
var app = express(); // Brackets Missing 
var server = require('http').createServer(app); // Need to do like this 

var io = require('socket.io').(server); // Need to pass server 

var request = require('request'); 
var serialport = require('serialport'); 
var Serialport = serialport; 

router.get('/machine_mode', function(req, res, next) { 

    res.render('machine_mode', { title: 'test' }); 
}); 

io.on('connection',function(socket){ // io.socket is not required 
    var str='hello'; 
    sockets.emit('view',str); 
}); 
+0

我必须做的 “IO =需要( 'socket.io')VAR(服务器)。”和“var server = require('http')。createServer(app); “in”routes \ index.js“。我不能在”routes \ index.js“中做到这一点? –