jquery - Node.js and Socket.io not working on this Example -


can please take @ following code , let me know doing wrong on that? running node.js + express + socket.io on ubuntu 12.4 trying create simple push function. server working cant see div id "status" content on page , apparently function not running!

thanks , comment in advance , sorry long post!

here app.js file /** * module dependencies. */

 var express = require('express')  , routes = require('./routes')  , user = require('./routes/user')  , http = require('http')  , path = require('path');   var app = express();   // 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  if ('development' == app.get('env')) {    app.use(express.errorhandler());   }    app.get('/', routes.index);   app.get('/users', user.list);    var status = "i not changed yet!.";    io.sockets.on('connection', function (socket) {   io.sockets.emit('status', { status: status });    socket.on('reset', function (data) {   status = "you change text!";   io.sockets.emit('status', { status: status });   });    http.createserver(app).listen(app.get('port'), function(){  console.log('express server listening on port ' + app.get('port'));  }); 

i modified "package.json" below, adding sockt.io dependencies

{   "name": "application-name",   "version": "0.0.1",   "private": true,   "scripts": {   "start": "node app.js"   },  "dependencies": {  "express": "3.2.3",  "jade": "*",  "socket.io:0.9.14"   }  } 

in view folder , in index.jade have

<div id="status"></div> <button id="reset">reset!</button> 

and in layout.jade have is:

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <meta name="description" content=""> <meta name="author" content="">  <!-- html5 shim, ie6-8 support of html elements --> <!--[if lt ie 9]>   <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->  <!-- styles --> <link href="/css/main.css" rel="stylesheet">  </head> <body> <%- body %> <script src="node_modules/socket.io/socket.io.js"></script> <script src="public/js/libs/jquery.js"></script> <script src="public/js/main.js"></script> </body> 

and function have in main.js:

var socket = io.connect(window.location.hostname); socket.on('status', function (data) { $('#status').html(data.status); });  $('#reset').click(function() { socket.emit('reset'); }); 

error message after editing robert hint

syntaxerror: unexpected end of input @ module._compile (module.js:439:25) @ object.module._extensions..js (module.js:474:10) @ module.load (module.js:356:32) @ function.module._load (module.js:312:12) @ function.module.runmain (module.js:497:10) @ startup (node.js:119:16) @ node.js:901:3 

you're missing few basics: you're not loading socket.io module (i'm assuming did install it, otherwise use npm install socket.io first), you're not connecting http server, , you're not including client in template (as @ltebean pointed out).

server side first:

// app.js var express = require('express') ,   routes  = require('./routes') ,   user    = require('./routes/user') ,   http    = require('http') ,   path    = require('path');  var app     = express() ,   server  = http.createserver(app)               // create http server ,   io      = require('socket.io').listen(server); // load socket.io , connect                                                          // http server ...  // start listening server.listen(app.get('port')); 

client side next:

// layout.jade ... <script src="/socket.io/socket.io.js"></script> ... 

in main.js, suggest using io.connect auto-discovery:

var socket = io.connect(); // no argument means auto-discovery 

also, package.json invalid:

"socket.io:0.9.14"     // not valid object property! "socket.io" : "0.9.14" // should 

Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -