3

ExpressGeneratorを使用してExpress3アプリを作成し、socket.ioをインストールしました。app.jsでメッセージを出力します:

io.sockets.on('connection', function(socket) {
  socket.emit('init', { msg: 'Welcome'});
});

サーバー側で私は書いた:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
    <script src='/socket.io/socket.io.js' />
    <script>
        var socket = io.connect('http://127.0.0.1:3000');
        socket.on('init', function (data) {
            console.log(data.msg);
        });
    </script>
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
  </body>
</html>

app.jsを実行すると、コンソールに「Welcome」と表示されますが、何も表示されません。/socket.io/socket.io.jsにアクセスできるかどうかを確認しました。

アプリを実行すると、次のようになります。

  info  - socket.io started
Express server listening on port 3000
GET / 200 28ms - 472
GET /stylesheets/style.css 200 163ms - 110
   debug - served static content /socket.io.js

私は何かが足りないのですか?socket.io Webページの例に従いましたが、サーバーは正常に実行されているようです...クライアント側で何かが発生している可能性がありますか?

編集:私もvar socket = io.connect('http://127.0.0.1', { port: 3000 } );クライアント側で試してみました、そしてまた本体からすべてのソケットクライアント側を実行しました。

io.sockets.onイベントでconsole.logを実行しても何も得られなかったため、「接続」に到達することはありません。

4

2 に答える 2

11

app.js:

var express = require('express')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path');

var app = express();
var server = http.createServer(app)

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/', routes.index);

server.listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

var io = require("socket.io").listen(server)

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
});

index.html:

<script>
    var socket = io.connect();
    socket.on('news', function (data) {
      console.log(data);
    });
</script>

ブラウザのコンソールに、「hello」:「world」を含むオブジェクトが表示されます。

于 2012-09-30T21:09:47.413 に答える
1

以前に投稿した例にindex.jadeファイルを追加する

server.js

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

server.listen(3000)
io.set('loglevel',10) // set log level to get all debug messages
io.on('connection',function(socket){
  socket.emit('init',{msg:"test"})
})
app.get('/',function(req,res){
  res.render('index.jade')
})

/views/index.jade

doctype html
html
  head
    script(src="/socket.io/socket.io.js")
    script.
      var sockets = io.connect()
      sockets.on('init',function(msg){
        alert(msg.msg)
      })
于 2012-09-30T21:10:03.180 に答える