简体   繁体   中英

express, socket.io server for browser client and node.js client

I am trying to set-up an express server with socket.io that will allow node.js clients and browser clients to connect. The browser connects with no problem. The node.js client using socket.io-client give an error: unhandled socket.io url

Server:

var express = require('express'),
    io = require('socket.io');

var app = express();
var host = 'localhost';
var port = process.env.PORT || 8080;

var server = app.listen(port, function() {
    console.log('Gulp is starting my app on PORT: ' + port)
});
io = io.listen(server);

app.use('/', express.static(__dirname + '/'));

io.on("connection", function(socket) {

    socket.on('clientMessage', function(jsonData, from) {
        socket.emit('serverMessage', 'Got a message!');
        console.log('Data being sent from', from, 'is:\n' + jsonData);
    });
});

Client:

var io = require('socket.io-client')

var socket = io.connect('http://192.168.1.222:8080', {reconnect: true});

socket.emit('clientMessage', 'Hello', 'Pi-Voyager');

The issue was with the way I was requiring my dependencies. It worked on other versions but on my current version it did not.

node -v
v0.12.4

"express": "^4.13.1",
"socket.io": "^1.3.6",
"socket.io-client": "^1.3.6"

With these versions, the following code works:

Server

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

var port = process.env.PORT || 8080;

server.listen(port, function() {
    console.log('Gulp is starting my app on PORT: ' + port)
});

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

io.on("connection", function(socket) {

    socket.on('clientMessage', function(jsonData, from) {
        socket.emit('serverMessage', 'Got a message!');
        console.log('Data being sent from', from, 'is:\n' + jsonData);
    });

});

Client

var io = require('socket.io-client')

var socket = io.connect('http://10.1.0.47:8080', {reconnect: true});

socket.emit('clientMessage', 'Hello', 'Pi-Voyager');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM