node.js - 获取 socket.io.js

标签 node.js tomcat socket.io

我真的是 node.js 的新手,如果有人能够帮助我,我将非常高兴。

我有一个 web 应用程序,在 tomcat 上,所以我使用的访问端口是 8080。 在我的一个 html 页面上,我试图实现的功能是当我单击特定按钮时,我想向访问该页面的任何人发送通知,然后这些用户将执行相关操作。 所以实际上,我想使用 node.js 作为通知服务器,使用 socket.io ,这就是我在服务器端所做的:

var io = require('socket.io').listen(3000);

io.on('connection', function (socket) {
    console.log("A new connection was opened");

  socket.on('status change', function(data) {
   console.log('status has changed to ' + data);
        io.sockets.emit('set new status', data);
  });

  socket.on('disconnect', function () {
    io.emit('user disconnected');
  });
}); 

在客户端,我在我的 html 页面上进行了配置,它位于我的 tomcat 服务器上,我做了以下操作(我只是从我的 html 中放了一些相关的部分):

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect('http://localhost:8000/');
    socket.on('set new status', function(data){
        myFunction();
    });
 $("#button").click(function()
    {
        socket.emit('status change', isOn);
    });
</script>

因此,当我打开我的 html 页面时,出现以下错误: 获取 http://localhost:8080/socket.io/socket.io.js
当然,如果我的 Web 应用程序在端口 3000 上运行,这是可以访问的。

我怎样才能让它工作?! 我确信我错过了一些非常愚蠢的东西,并且白白浪费了几个小时。

谢谢!

最佳答案

问题是您的 tomcat 服务器没有重定向到 socket.io 库的 Node.js 服务器。我不是 tomcat 专家,所以我会链接 https://serverfault.com/questions/55427/redirecting-tomcat-requests-to-another-host作为寻找解决方案的可能场所。

你想要做的是设置它,以便当请求进入 tomcat 时/socket.io/socket.io.js 它转发到:3000/socket.io/socket.io.js

您还需要为任何其他需要提供服务的 Assets 执行此操作。可能值得设置一个子文件夹来提供服务。

您可以做的另一件事是从 Node.js 本身提供全部内容。

我们使用 Hapi,我可以向您介绍一些使用它构建的聊天应用程序,或者查看 Socket.io 页面本身以获取聊天应用程序的完整 Node 实现。如果您使用 Express 或只想使用 Node,那么那里有资源,但我手边没有准备好:D

关于node.js - 获取 socket.io.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364672/

相关文章:

javascript - 异步事件后的数组顺序

python - 从 Python 发布时订阅不起作用

java.lang.IllegalStateException : CDI API is not available in this environment. 在 org.omnifaces.config.BeanManager

java - mod_jk1.2.32 的 JK Status Manager(status worker) 没有在 Web 界面上显示正确的 worker 状态

node.js - 从套接字 io 访问 Express session

javascript - 在 mocha 测试报告器中使用 ajax-post 失败

javascript - AWS 授权方返回 500,消息 : null,,响应中出现 AuthorizerConfigurationException 错误

jsp - war文件中的数据库连接

node.js - Socket.IO:从客户端到服务器的发送是私有(private)的

node.js - Socket.IO连接错误