2012-12-25 24 views
0

這樣一個愚蠢的問題,抱歉。所以我已經下載了node.js/sockets.io/express.js。試圖製作一個簡單的多人遊戲,但是從當前的Hello World開始。卡住sockets.io你好世界。不知道如何運行應用程序?

我有以下目錄結構:

-index.html 
-server.js 
-package.json 
-node_modules/ 

的server.js具有下面的代碼:

var app = require('express'); 
var http = require('http'); 
var io = require('socket.io'); 
/* 
var server = http.createServer(function(req,res){ 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('<h1>Hello world</h1>'); 
}).listen(80); 
*/ 

var server = http.createServer(app); 
server.listen(80); 

var socket = io.listen(server); 

var usersCount = 0; 

socket.on('conection', function(client){ 
    ++usersCount; 
    console.log('client connecting... client# = ' + userCount); 
    client.emit('onMessageReceived',{msg:"You are client number: " + userCount}); 
}); 

我的客戶端代碼中的index.html,其內容是:

<html> 
<head> 
    <title> Client Code </title> 
    <script src="/socket.io/socket.io.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script> 
</head> 

<body> 
    <script> 
    $(document).ready(function(){ 
     var socket = new io.Socket({'127.0.0.1',{port:80}}); 
     socket.connect(); 
     socket.on('connect', function(obj){ 
      console.log('client connection successful..'); 
     }); 
     socket.on('onMessageReceived', function(data){ 
     console.log("client has received message: " + data.msg); 
     }); 
    }); 
    </script> 
</body> 

和我的package.json包含:

{ 
    "name": "hello_world", 
    "version": "0.0.0", 
    "description": "hello world test program", 
    "main": "server.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "repository": "", 
    "author": "", 
    "license": "BSD", 
    "dependencies":{ 
    "express":"3.0.5", 
    "http": "", 
    "socket.io":"" 
    } 
} 

現在,我不知道如何繼續運行的應用程序,如果我就算完了。任何關於如何繼續下一步的幫助。我現在猜測我需要不斷運行server.js,並讓多個客戶端打開index.html以連接到server.js。

回答

1

它在我看來你沒有正確地聲明你的服務器。您需要創建快遞服務器,因爲express 3.x看起來像這樣

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

var app = express() 
    , server = require('http').createServer(app) 
    , io = io.listen(server); 

然後,您可以將您的服務器監聽端口

server.listen(8080); 

的一個實例,然後,您可以

app.get('/', function(req, res){ 
    res.render('index'); 
}); 
render
+0

結果看起來更好,我在瀏覽器中收到消息正文,說不能Get /。我想我需要聲明之前在教程中看到的get函數。我如何使用index.html連接到服務器? server.js正在監聽端口8080,所以我可以打開index.html並將其連接到服務器? – dchhetri

+0

您使用快遞服務器呈現網頁'app.get('/',routes.index);'您也可以將其配置爲使用html,但作爲默認使用[jade](http:// jade- lang.com/)。我會研究[配置](http://expressjs.com/api.html#app.configure)你表達的應用程序,也許定義一個路線和視圖目錄來呈現網頁。 – Loourr

1

首先,你不希望在hello世界程序中真正使用端口80,它使它變得更加困難,你必須是root用戶,使用端口8080,而不是端口80,它比世界更容易。 然後運行程序打開你的命令行並cd進入server.js的目錄並運行node server.js 然後在瀏覽器中打開localhost:8080,並在控制檯上看到日誌。 希望這可以幫助

+0

我應該在我的〜/ Sites /目錄中有我的index.html代碼嗎?如果我在瀏覽器中打開localhost:8080,它就會掛起。 – dchhetri