3

Hi I'm trying to develop a chat system using socket.io, express.io and node.js everything is going smoothly, and I have been following the documentation from them.

The problem is as soon as I'm trying to integrate the design to the skeleton app that I have developed, it wont load correctly. It only gives me a popup notifying me to either download or open the PHP file.

here is my index.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
  res.sendfile('message.php');
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);
  });
});

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});
http.listen(3000, function(){
  console.log('listening on *:3000');
});

Am I doing something wrong here?

11
  • 1
    I have tried searching for it and no good I cant seem to find a solution... Commented Jul 31, 2014 at 8:34
  • how are you handling this client side ? and you really should consider the use of an express template engine like ejs or node... Commented Jul 31, 2014 at 8:38
  • 1
    @Krumia Yes I need to execute the php file because the whole interface is there... if i put instead message.html instead of message.php it will work.. Commented Jul 31, 2014 at 10:04
  • 1
    ejs and jade are both template engines, but each one has its own syntax Commented Jul 31, 2014 at 10:55
  • 1
    I see so how can node interpret my php file? sorry if I'm asking stupid questions because I'm new to websocket and node so basically my knowledge here is so little Commented Jul 31, 2014 at 10:58

1 Answer 1

2

socket.io sendfile will just send the contents of the file to the client. It does not matter if you give a PHP script or an image file to sendfile. It does the same.

If you want to execute a PHP script, you can do one of the following:

  • Run a separate web server that interprets PHP, and then connect to that server from Node.js, as described in this answer.
  • Run the PHP interpreter with child_process, then send the standard output of that process to client.
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.