我是Socket.IO的100%新手,并且刚刚安装了它。我试图遵循一些示例,并且可以使服务器端运行,但似乎无法使客户端连接。
以下是我的server.js:
var http = require('http'), io = require('socket.io'), server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); res.end('<h1>Hello world</h1>'); }); server.listen(8090); var socket = io.listen(server); socket.on('connection', function(client){ console.log('Client connected.'); client.on('message', function(){ console.log('Message.'); client.send('Lorem ipsum dolor sit amet'); }); client.on('disconnect', function(){ console.log('Disconnected.'); }); });
这是我的index.html
<!DOCTYPE html> <html lang="en"> <head> <title>Socket Example</title> <base href="/" /> <meta charset="UTF-8" /> <script src="http://localhost:8090/socket.io/socket.io.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> </head><body> <script type="text/javascript"> $(document).ready(function(){ var socket = new io.Socket('localhost', { 'port': 8090 }); socket.connect(); console.log("Connecting."); socket.on('connect', function () { console.log("Connected."); }); socket.on('message', function (msg) { console.log("Message: " + msg + "."); }); socket.on('disconnect', function () { console.log("Disconnected."); }); }); </script> </body></html>
当我执行node server.js时,它指示socket.io已启动。
当我加载index.html时,出现一行,指出“调试-服务静态/socket.io.js”,但除此之外,没有控制台消息或其他行。
您提供的任何指导将不胜感激。正如我说的那样,我对此表示100%的绿色,因此,如果您能将其尽可能分解,我也将不胜感激。
谢谢
在相同的起源策略中,localhost:8090并且localhost不是相同的起源(不同的端口),因此localhost/index.html无法连接到localhost:8090上的socket.io。
localhost:8090
localhost
localhost/index.html
一种选择是启用index.html localhost:8090(请参见下面的代码)。然后,您只需将“ index.html”放入服务器脚本的同一目录中,启动服务器并输入localhost:8090浏览器。
var fs = require('fs'); server = http.createServer(function(req, res){ fs.readFile(__dirname + '/index.html', 'utf-8', function(err, data) { // read index.html in local file system if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); res.end('<h1>Page Not Found</h1>'); } else { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(data); } }); });