javascript - Socket.io 简单 Node 应用程序不工作

标签 javascript html node.js sockets socket.io

我有这个小 socket 室应用程序,但由于某种原因无法使用。我试图让用户点击加入房间并显示警报,无法弄清楚问题所在,我对套接字有点陌生,甚至无法让这个简单的应用程序正常工作。这是我的代码

////app.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');
});

io.on('connection', function(socket) {
    socket.on('room', function(room) {
        socket.join(room);
    });
});

room = "abc123";
io.sockets.in(room).emit('message', 'what is going on, party people?');

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

////index.html

<!DOCTYPE html>
<html>

<head>
  <title>flip</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

</head>

<body>
<button>Join the room!</button>
</body>
<script>
 var socket = io.connect();

// let's assume that the client page, once rendered, knows what room it wants to join
var room = "abc123";

socket.on('connect', function() {
   $('button').click(function() {
      socket.emit('room', room);
   })

});

socket.on('message', function(data) {
   alert(data)
});

</script>

</html>

最佳答案

在客户端你必须:

 var socket = io.connect('http://localhost:3000');

在服务器端:

io.on('connection', function(socket) {
    socket.on('room', function(room) {
        socket.join(room);
        room = "abc123";
        io.to(room).emit('message', 'what is going on, party people?');
    });
});

在收到连接之前,您不能发送。

关于javascript - Socket.io 简单 Node 应用程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39535246/

相关文章:

javascript - 将 Ruby on Rails 与 Epub.js 集成

javascript - Node : Can you use plain Javascript objects as an in-memory datastore?

javascript - Nodejs 页面在 POST 后未重定向

javascript - 使用 postmessage 发回消息

html - 悬停时如何更改表数据单元背景颜色和数据单元内的链接文本

javascript - ReferenceError :room is not defined, RTCpeerconnection 不工作。客户端无法连接

php - Magento 将横幅添加到自定义 phtml

html - Angularjs HTML5 视频攻击

javascript - 跨模块共享事件

arrays - 在 Node.js 中异步添加到数组