坚持sockets.io你好世界。不确定如何运行该应用程序?

时间:2012-12-25 00:34:19

标签: node.js http express websocket socket.io

这是一个愚蠢的问题,抱歉。所以我下载了node.js / sockets.io / express.js。试图制作一个简单的多人游戏,但目前从hello world开始。

我有以下目录结构:

-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。

2 个答案:

答案 0 :(得分:1)

首先,您不希望在hello world程序中真正使用端口80,这使得它变得更难,您必须是root用户,使用端口8080而不是端口80更容易。 然后运行程序打开你的命令行并进入server.js目录并运行node server.js 然后在浏览器中打开localhost:8080,在控制台上你应该看到日志。 希望这有帮助

答案 1 :(得分: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);

然后,您可以render

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