[英]Express - Socket.io connection is not working
I am a beginner in express
and angularjs
. 我是express
和angularjs
的初学者。 I have an express
server and I want my web client to connect to: This is the code: 我有一个express
服务器,希望我的Web客户端连接到:这是代码:
// app.js
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = 4000;
app.use(express.static('.'));
app.get('/', function (req, res) {
res.sendFile( './index.html');
});
io.on('connection', function(client) {
console.log('Client connected...');
client.on('join', function(data) {
console.log(data);
});
client.on('join', function(data) {
console.log(data);
client.emit('messages', 'Hello from server');
});
});
server.listen(port, '0.0.0.0');
console.log("App listening on port " + port);
This is the client: 这是客户:
<script src="/src/bower_components/angular-socket-io/mock/socket-io.js"></script> <script src="/src/bower_components/angular-socket-io/socket.js"></script> <script> var socket = io.connect(); console.log(socket); console.log("socket.io : "); socket.on('connect', function(data) { socket.emit('join', 'Hello World from client'); }); </script>
I am trying to make it work. 我正在努力使它工作。 But when I reload the webpage, it seems like client don't event try to connect to server. 但是当我重新加载网页时,似乎客户端没有事件尝试连接到服务器。 Event if a put wrong address, there is not reaction. 事件如果放错地址,则没有反应。 Can someone helps me ? 有人可以帮我吗?
The thing that is preventing the client from sending out that 'join' event to the server is that you don't need to put the socket.emit
logic inside of a 'connect' event. 阻止客户端将“加入”事件发送到服务器的原因是您不需要将socket.emit
逻辑放在“连接”事件内部。 After you make your socket on the client side, you are already connected. 在客户端上建立套接字后,您已经建立连接。 So try this: 所以试试这个:
<script src="/src/bower_components/angular-socket-io/mock/socket-io.js"></script>
<script src="/src/bower_components/angular-socket-io/socket.js"></script>
<script>
var socket = io.connect();
console.log(socket);
console.log("socket.io : ");
socket.emit('join', 'Hello World from client');
</script>
Also, inside the app.js, it seems that you're subscribing to the 'join' event twice. 另外,在app.js中,似乎您在两次订阅'join'事件。 This is unnecessary, you only need to subscribe to an event once. 这是不必要的,您只需要订阅一次事件。 For example: 例如:
io.on('connection', function(client) {
client.on('join', function(data) {
console.log(data);
client.emit('messages', 'Hello from server');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.