Javascript Socket.io和Redis发布/订阅不工作

Javascript Socket.io和Redis发布/订阅不工作,javascript,node.js,redis,socket.io,publish-subscribe,Javascript,Node.js,Redis,Socket.io,Publish Subscribe,大家好,我想知道我的代码中的错误是什么,我的代码是关于socket.io和redis pub/sub的。这是我第一次尝试,希望大家能帮助我 这是我的index.html <!doctype html> <html> <script src="/socket.io/socket.io.js"></script> <script> var socket = new io.Socket();

大家好,我想知道我的代码中的错误是什么,我的代码是关于socket.io和redis pub/sub的。这是我第一次尝试,希望大家能帮助我

这是我的index.html

<!doctype html>
<html>
    <script src="/socket.io/socket.io.js"></script>
    <script> 
        var socket = new io.Socket();
        socket.connect();

        socket.on('connection', function (socket) {
            console.log('Connected');
        });

        socket.on('disconnect', function (socket) {
            console.log('Disconnected');
        });
    </script>
    <center>
    <h1>Test Page</h1>
    </center>
</html>
<!doctype html>
<html>
    <script src="http://localhost:1234/socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect('http://localhost:1234/');

        socket.on('connection', function (socket) {
            console.log('Connected');
        });

        socket.on('disconnect', function (socket) {
            console.log('Disconnected');
        });
    </script>
    <center>
    <h1>Test Page</h1>
    </center>
</html>

我希望你能帮我修复这个代码。提前感谢各位。

我没有看到您将redis设置为socket.io服务器中的存储。我举了一些例子供您参考:

// start up express server along with socket.io
var express = require('express');
var server = express();
var socket = require('socket.io');
var io = socket.listen(server);

// socket.io
io.set('store', new socket.RedisStore);

// set-up connections...
io.sockets.on('connection', function(socket) {

        io.emit('an event sent to all connected clients');

        socket.on('some-event', function(rooms) {
            ...
        });

});
您可以阅读以下文档链接:


  • 我可以在您的代码中看到许多错误:

    • 在index.html中,您应该连接到
      http://localhost:1234/
      ,因为它是在服务器代码中定义的
    • var客户端
      未在app.js中使用
    • sub
      从不订阅某些内容。你需要订阅一个频道
    • 订阅模式下的连接无法向redis发送命令:只有修改订阅集的命令才有效
    • sub.incr
      永远不会发布消息:您必须调用publish
    • 不要调用
      pub.end()
      sub.end()
      ,因为连接将关闭
    • 不要将处理程序添加到连接事件:内存泄漏下的事件
      消息
    我不知道您到底想做什么,但这里有一个更新版本:

    index.html

    <!doctype html>
    <html>
        <script src="/socket.io/socket.io.js"></script>
        <script> 
            var socket = new io.Socket();
            socket.connect();
    
            socket.on('connection', function (socket) {
                console.log('Connected');
            });
    
            socket.on('disconnect', function (socket) {
                console.log('Disconnected');
            });
        </script>
        <center>
        <h1>Test Page</h1>
        </center>
    </html>
    
    <!doctype html>
    <html>
        <script src="http://localhost:1234/socket.io/socket.io.js"></script>
        <script>
            var socket = io.connect('http://localhost:1234/');
    
            socket.on('connection', function (socket) {
                console.log('Connected');
            });
    
            socket.on('disconnect', function (socket) {
                console.log('Disconnected');
            });
        </script>
        <center>
        <h1>Test Page</h1>
        </center>
    </html>
    

    我认为问题不在于如何配置存储