2014-04-29 26 views
2

我正在使用node.js第一次在我的項目中,我正在WAMP上運行我的項目。如何在wamp上運行套接字以及爲localhost使用哪個端口

我創建app.js和代碼爲我app.js是:

var http = require("http"); 
var url = require("url"); 
var qs = require("querystring"); 

// Create an HTTP server for *socket.io* to listen on 

var app = http.createServer(); 
var io = require("socket.io").listen(app);app.listen(8080); 

var authorisedIPs = [ 
'127.0.0.1', 
'192.168.0.204' 
]; 

var clients = {}; 

function handler(req, res){ 

var remoteAddress = req.socket.remoteAddress; 

if(authorisedIPs.indexOf(remoteAddress) >= 0) { 

try{ 

    if(req.method == 'GET'){ 

    var body = ''; 

    req.on('error',function(){ 
     res.writeHead(500, {"Content-Type": "text/plain"}); 
     res.end("Error"); 
    }); 

    req.on('data',function(data){ 

     body += data; 

     if(body.length > 1e6){ 
     response.writeHead(413, {'Content-Type': 'text/plain'}); 
     req.connection.destroy(); 
     } 
    }); 

    req.on('end',function(){ 
     var returned = JSON.parse(body); 
     var client_name = returned.admin_id+'_'+returned.user_id+'_'+returned.login_id; 
     var channel = returned.channel; 
     var event = returned.status; 

    for(var keys in clients){ 
    if(keys == client_name){ 

    var socket_to_send = clients[keys]; 
    socket_to_send.emit(channel,body); 
    } 
    } 

    if(typeof socket_to_send != 'undefined'){ 
    } 
    }); 
    } 

    res.writeHead(200, {"Content-Type": "text/plain"}); 
    res.end("ok"); 
} 
catch(error){ 
    res.writeHead(500, {"Content-Type": "text/plain"}); 
    res.end("Error"); 
} 
} 
else{ 
res.writeHead(401, {"Content-Type": "text/plain"}); 
res.end("Unauthorised"); 
} 
} 

function sendData(socket){ 
var thisRef = this; 
var currentTimeObj = new Date(); 


var formattedTime = currentTimeObj.getDate() + "-" +currentTimeObj.getMonth() + "-" + currentTimeObj.getFullYear() + " " + currentTimeObj.getHours() + ":" + currentTimeObj.getMinutes() + ":" + currentTimeObj.getSeconds(); 
socket.emit('timeUpdate', { currentTime: formattedTime}); 
setTimeout(function(){ 
sendData.call(thisRef,socket) 
},1000); 
    } 

    function testfunc(socket){ 
    socket.emit('testEvent', { message: 'testing...'}); 
    } 

function testfunc1(socket){ 
socket.emit('testEvent', { message: 'testing1...'}); 
} 

io.sockets.on('connection', function (socket) { 
socket.emit('get_name', {}); 
socket.on('forceDisconnect',function(data12){ 
    for(var keysd in clients){ 
    if (keysd == data12.my_name) { 
     delete clients[keysd]; 
     socket.disconnect(); 
    } 
    } 
}); 

socket.on('take_name', function (data11) { 
    clients[data11.my_name] = socket; 
}); 

    }); 

    function getsplitText(string,splitter,index){ 
    return_arr = string.split(splitter); 
    return return_arr[index]; 
} 

    http.createServer(handler).listen(8080, '192.168.0.204'); 

和我的客戶端HTML是:

<!DOCTYPE html> 
<html> 
<head> 
<title>Server Time poller</title> 
<meta charset="UTF-8"> 
</head> 
<body> 
<div id="statusMessageDiv"> 

</div> 
<div id="serverTimeDiv"></div> 
</body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js">  </script> 
<script src="192.168.0.204:3000/socket.io/socket.io.js"></script> 
<script> 


$(document).ready(function(){ 
alert('hello'); 
var socket = io.connect('http://192.168.0.204:8080'); 

socket.on('testEvent',function(data){ 
$("#statusMessageDiv").html(data.welcomeMessage); 
socket.emit('testRevert',{message:'acknowledged'}); 
}); 
socket.on('timeUpdate', function (data) { 
$("#serverTimeDiv").html(data.currentTime); 
}); 
}); 
</script> 
</html> 

當我運行應用。 js on console,I get the response

info - socket.io started. 

但是,當我在瀏覽器中打開的index.html,我得到的警報「你好」,然後錯誤

ReferenceError: io is not defined 
var socket = io.connect('http://192.168.0.204:8080'); 

請幫助。

回答

0

審查後妥善我認爲這個問題是您的端口:

您使用3000端口的位置: <script src="192.168.0.204:3000/socket.io/socket.io.js"></script>

和您的應用程序上的端口運行時8080

+0

感謝reply.But獲得相同錯誤。 – Happy

+0

港口呢?您正在使用一次端口3000和另一次端口8080 – knowbody

相關問題