我正在尝试使用laravel开发实时聊天应用程序。我遇到了问题。当我运行“ node index.js”时,在命令提示符下连续显示“连接已建立”消息。
我的index.js文件是:
var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); app.get('/', function(request, response){ response.sendFile(__dirname+ '/index.html'); }); io.on('connection', function(socket){ console.log('A connection has made'); // socket.on('chat.message', function(message){ // io.emit('chat.message', message); // }); });
我的index.html页面是:
<!DOCTYPE html> <html> <head> <title>Live Chat</title> </head> <body> <div class="container" id="chat"> <h1> Chat System </h1> </div> <script type="text/javascript"> var socket = io(); </script> </body> </html>
我该如何解决?
客户端不断尝试一遍又一遍地进行连接的通常原因是,因为客户端和服务器版本的socket.io不匹配,导致它们不兼容。您没有显示如何在网页中加载socket.io Javascript,但是如果这样做,则:
<script src="/socket.io/socket.io.js"></script>
然后,您将始终从服务器自动获得与服务器完全匹配的版本(这是socket.io服务器自动添加到Express服务器的路由)。
如果要从CDN加载socket.io,则必须切换到上述内容以从您自己的服务器加载它,或者从CDN手动指定与服务器上运行的版本完全相同的版本。