9

everyone

I'm very new to node.js. I'm trying to do a tcp server <-> client using node.js. So far so good. The server script can be run Ok. Also the client script can be run OK.

But the problem is I could only get the client to run from the terminal by typing command (node client.js).
The thing is I would like to run it in a browser so I could take the data received from server display on browser.

How do I do that?

Please help.

Kawin.

This is the client code. (I can't remember who originally created this script. I copy and paste it from somewhere but forget to bookmark from which I get the link. Sorry for not putting the credit to the owner of this script.)

var net = require('net');

var HOST = '192.168.0.88';
var PORT = 8888;

var client = new net.Socket();
client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    // Write a message to the socket as soon as the client is connected, the   server will receive it as message from the client 
    client.write('B2\r\n');
});

// Add a 'data' event handler for the client socket
// data is what the server sent to this socket
client.on('data', function(data) {
    console.log('DATA: ' + data);
    // Close the client socket completely
    client.destroy();
});

// Add a 'close' event handler for the client socket
client.on('close', function() {
    console.log('Connection closed');
}); 

Thank you.

Markus Safar
  • 6,324
  • 5
  • 28
  • 44
  • 1
    *"How do I do that?"* You can't. Node.js and the browser are two different environments. If you use a feature that is unique to an environment (such as TCP sockets), you can't use the same script in other environments. – Felix Kling Jan 21 '15 at 04:20
  • Thank you. so i think i might have to change my plan to acheive this. – Kawin Netvichitpan Jan 21 '15 at 06:32

3 Answers3

11

Node.js is not browser javascript. There are many parts of it that use OS features not available in a browser context. The way to do what you're looking to do while staying in the browser for the client, is to not use a TCP socket, but instead look into WebSockets (e.g. socket.io, which offers server and browser clients).

Paul
  • 35,689
  • 11
  • 93
  • 122
8

Times are changing. It's just been announced that it might be possible to use node.js in the browser soon. Check out this link: Run Node.js in the browser

Anbesa
  • 101
  • 1
  • 7
-7

The thing is I would like to run it in a browser so I could take the data received from server display on browser.

I think you need 'http' module.

var http=require('http');
var server=http.Server(function(req,res) {
    res.end('<p>hello world</p><script>alert("hello world")</script>');
});

server.listen(8080);

so you can get data from browser side by typing URL 'localhost:8080'

Markus Safar
  • 6,324
  • 5
  • 28
  • 44
dayuoba
  • 1
  • 1