Socket.io not being served by Node.js server

As I understood it, from http://socket.io/#how-to-use
, node.js
automatically serves the socket.io file on the server.

I have installed socket.io with npm install socket.io
and I can see that it resides in node_modules
one level above the server root.

server.js:

var static = require('./plugins/node-static');
var socketIO = require('socket.io');
var clientFiles = new static.Server('./client');

var http = require('http');
httpServer = http.createServer(function (request, response) {
    request.addListener('end', function () {
            clientFiles.serve(request, response);
        });
}).listen(8253);

var webSocket = socketIO.listen(httpServer);
webSocket.on('connection', function(client) { .....

index.html:

    Chat


    
    

    
        $(document).ready(function() {
            var webSocket = new io.Socket('localhost', { port: 8253 });
            webSocket.connect(); .......

Starting the server works fine, but when opening index.html, I receive the following error:

GET http://localhost:8253/socket.io/socket.io.js 404 (Not Found)
Uncaught ReferenceError: io is not defined                 :8253/:25

Ideas?

Problem courtesy of: Soroush Hakami

Solution

Try listening on the server after you bind it with socket.io

Place this

httpServer.listen(8253);

after

var webSocket = socketIO.listen(httpServer);

Solution courtesy of: fent

Discussion

Edited: Apologies, I have written something that did not answer your question.

On the client side you need the following:

var socket = io.connect(); //Hostname and port not required - Autodetected
socket.on('connect', function(){
  $('#status').text('Connected');
});
socket.on('message', function(m){
 $('#message').text(m);
});
socket.on('disconnect', function(){
 $('#status').text('Disconnected');
});

Working example => https://github.com/parj/node-websocket-demo/blob/master/public/main.js

NPM Information (if required): If you are in Linux

cd 
npm install -g socket.ion #install globally
npm link socket.io. #Create a symbolic link

If you are on Windows you can’t do npm link

cd 
npm install socket.io

Your directory structure should look like

server.js
node_modules/ #Directory - same level as server.js
    socket.io #socket.io underneath that

node_modules should be in the same directory as server.js, not above server root

Discussion courtesy of: First Zero

For those deploying on Azure (I can’t vouch for any other platforms) make sure that your package.json file includes a start script.

Example:

"scripts" : { "start": "node index.js" }

Discussion courtesy of: Bryan Gordley

This recipe can be found in it’s original form on Stack Over Flow
.

稿源:Node.js Recipes (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » Socket.io not being served by Node.js server

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录