在下面发布代码。但是有一点背景。我的节点服务器通过AWS托管在EC2服务器上。我的网站是使用Angular Framework完成的。
let express = require('express');
let app = express();
let http = require('http');
let server = http.Server(app);
let usercount = 0;
let socketIO = require('socket.io');
let io = socketIO(server);
const port = process.env.PORT || 3000;
io.on('connection', (socket) => {
usercount++;
console.log(usercount.toString());
socket.on('join-main-chat', (message) => {
socket.join('main room');
io.to('main room').emit('new-message', usercount.toString());
});
socket.on('change-room', (message) => {
newRoom = message.substring(message.indexOf('-') + 1, message.length);
let user = message.substring(0, message.indexOf('-') - 1);
socket.leaveAll();
socket.join(newRoom);
console.log(user + " joined the " + message + " room");
io.to(newRoom).emit('new-message', user + " joined the " + newRoom);
});
socket.on('new-message', (message) => {
console.log(message);
let newMessage = message.substring((message.indexOf(":") + 2), message.length);
let currentRoom = message.substring(0, message.indexOf(":"));
io.to(currentRoom).emit('new-message', newMessage);
io.emit('get-count', usercount.toString());
});
socket.on('left-message', (message) => {
usercount--;
console.log(usercount.toString());
io.emit('new-message', message);
io.emit('new-message', usercount.toString());
io.emit('get-count', usercount.toString());
});
});
server.listen(port, () => {
console.log(`started on port: ${port}`);
});
从台式机或笔记本电脑访问我的网站时,此方法没有任何问题。这在其他许多计算机上也可以使用。但是,当我尝试从手机访问它时,似乎手机从未连接到节点服务器。
我真的不确定为什么会这样吗?
答案 0 :(得分:0)
您已经提到您正在使用Google Chrome移动浏览器。 Chrome WebSocket support是相当新的,采用率看起来很低-您可能使用的是旧版本。您需要更新您的移动浏览器才能获得该功能。