簡體   English   中英

我的客戶端socket.io在哪里?

[英]Where is my client side socket.io?

我已經使用Express和React-Engine創建了一個同構的React應用程序。 現在,我正在嘗試連接socket.io。 在快速設置中,我有

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
...
app.set('views', __dirname + '/public/views');

app.get('/', function(req, res) {
  res.render(req.url, {
    title: 'React Engine Express Sample App',
    name: 'something'
  });
});
...
var server = app.listen(3000);

io.on('connection', function (socket) {
  socket.on('logIn', function (data) {
      console.log(data);     
  });
});

在前端,我有一個React組件Layout

var React = require('react');
var socket;

module.exports = React.createClass({
    componentDidMount: function () {       
        socket = io();        
    },
    clicked: function () {
        socket.emit('logIn', {name: "Dan"});    
        console.log("clicked");
    },
    render: function render() {
        return (
          <html>
            <body>
              {this.props.children}
              <button onClick={this.clicked}>click me</button>
              <script src="/socket.io/socket.io.js"></script>
            <script src='/bundle.js'></script>
            </body>            
          </html>
        );
    }
});

項目結構是

index.js(express app)
package.json
/public
    bundle.js(generated by webpack)
    index.js(front-end routing setup)
    routes.jsx
    /views
        app.jsx
        layout.jsx(where the front end really starts)

從我所看到的一切來看,這應該可行。 Express應用程序應托管socket.io文件,以便我可以在前端使用它。 盡管如此,這還是localhost:3000 / socket.io / socket.io.js都不起作用。 我什至嘗試了幾種不同的相對路徑。 如何找到我的客戶端socket.io文件?

我正在使用的序列是這樣的:

var express = require('express');
var app = express();
var server = app.listen(8081);
var io = require('socket.io').listen(server);

我不確定您的哪個方面可能會引起問題,但與此不同,特別是在設置服務器的方式(將兩個不同的值分配給server變量,這看起來不太正確)以及初始化方式方面套接字

另外,我見過有些人在服務器端安裝了socket.io客戶端版本,而不是服務器版本,顯然服務器版本無法讓您提供/socket.io/socket.io.js文件的功能,因此值得檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM