获取socket.io.js

时间:2015-09-02 23:18:55

标签: node.js tomcat socket.io

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

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

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

在客户端,我配置在我的tomcat服务器上的html页面上,我做了以下操作(我只是从我的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
当然,如果我的网络应用程序在端口3000上运行,则可以访问它。

我怎样才能让它发挥作用?! 我确信我错过了一些非常愚蠢的东西,并且花费数小时无所事事。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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