【问题标题】:Stuck on sockets.io hello world. Not sure how to run the app?卡在 sockets.io hello world 上。不确定如何运行应用程序?
【发布时间】:2012-12-25 00:34:18
【问题描述】:

这么愚蠢的问题,对不起。所以我下载了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。

【问题讨论】:

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


    【解决方案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 pages

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

    【讨论】:

    • 结果看起来更好,我在浏览器中收到一条消息正文,说无法获取/。我想我需要声明之前在教程中看到的 get 函数。如何使用 index.html 连接到服务器? server.js 正在监听 8080 端口,我可以直接打开 index.html 并连接到服务器吗?
    • 您使用快速服务器来呈现页面app.get('/', routes.index);,您也可以将其配置为使用html,但默认情况下它使用jade。我会调查configuring 你表达的应用程序,并可能定义一个路由和一个视图目录来呈现页面。
    【解决方案2】:

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

    【讨论】:

    • 我应该在 ~/Sites/ 目录中有我的 index.html 代码吗?如果我在浏览器中打开 localhost:8080 它就会挂起。
    猜你喜欢
    • 2014-09-05
    • 2022-01-15
    • 2018-11-26
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多