[英]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.