Socket.io不起作用

时间:2016-07-14 10:54:52

标签: javascript node.js socket.io serverside-javascript

这是我的server.js:

var app = require('express')();
var server = require('http').Server(app).listen(8080,function(){
 console.log('working');
  });
var io = require('socket.io')(server);

app.get('/',function(req,res){
 res.sendFile(__dirname+'/index.html');
 });

io.on('connection',function(socket){
console.log('someone connected');
});

这是我的index.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<script src="node_modules/socket.io-client/socket.io.js"></script>
 <script src="http://code.jquery.com/jquery-1.11.1.js"></script>


 <script>
    var socket = io();


</script>

</body>
 </html>

我认为我在网站上做得非常正确,但是当我在节点上运行并查看localhost:8080时,我无法在控制台中看到“有人连接”的句子。问题出在哪里或者可能出现什么问题?< / p>

2 个答案:

答案 0 :(得分:2)

我在服务器上设置了代码,但将index.html文件的脚本源更改为:

<script src="/socket.io/socket.io.js"></script>

我可以在服务器上记录someone connected

这取自socket.io website的顶部示例。我想文件路径解析必须在socket.io服务器源代码中的某处处理。

另请参阅:Can't find socket.io.js

答案 1 :(得分:0)

试试这个,它为我工作

Server.js(服务器端)

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/index.html');
  console.log(__dirname + " dir name");
});


io.on('connection', function(socket) {

  socket.on("join", function(name) {
  });

  socket.on('disconnect', function() {

  });
});

http.listen(8080, function() {
  console.log('listening on *:8080');
});

在客户端

var socket = io.connect("http://localhost:8080");

    socket.on('connect', function() {
        //connect
    });

socket.emit("join", 'user1');