【问题标题】:node.js WebSocket Servernode.js WebSocket 服务器
【发布时间】:2011-08-13 01:01:39
【问题描述】:

目前我尝试为我们的数据库周围的新活动创建一个推送服务器实例。当然,你会发现很多关于这个主题的信息。

我正在使用: http://static.brandedcode.com/nws-docs/#s6-p1

使用以下客户端实现:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

        <script src="http://cdn.socket.io/stable/socket.io.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

        <title></title>
    </head>
    <body>
        <script type="text/javascript">
            (function() {
                var webSocket = new io.Socket('ws//test', {
                    port: 8080
                });

                webSocket.connect();

                webSocket.on('connect',function() {
                    console.log('Client has connected to the server!');
                });

                webSocket.on('message',function(data) {
                    console.log('Received a message from the server!',data);
                });

                webSocket.on('disconnect',function() {
                    console.log('The client has disconnected!');
                });

                window.ws = webSocket;
            }());
        </script>
    </body>
</html>

控制台返回:

Unexpected response code: 404
XMLHttpRequest cannot load http://ws//test:8080/socket.io/xhr-polling//1303822796984. Origin http://test is not allowed by Access-Control-Allow-Origin.
1303822796984GET http://ws//test:8080/socket.io/xhr-polling//1303822796984 undefined (undefined)

我不知道问题所在。

感谢您的帮助。

你好!

【问题讨论】:

    标签: javascript html node.js websocket


    【解决方案1】:

    您可能想要'ws://push.xxx.binder.test' 而不是'ws//push.xxx.binder.test'(缺少冒号)。

    【讨论】:

      【解决方案2】:

      您正在尝试使用 Socket.io 直接连接到 WebSocket 服务器。 如果您只运行 WebSocket 服务器而不运行 Socket.io 服务器,您可以使用普通的 HTML5 API 连接到 websocket。

      例如:

      var ws = new WebSocket("ws://domain:port");
      ws.onopen = function(){}
      ws.onmessage = function(m){}
      ws.onclose = function(){}
      

      你用的是什么浏览器? WebSockets 目前仅受 Google Chrome 支持。在其他浏览器中测试会失败。

      【讨论】:

      • 如果我想在不依赖onmessage 事件等的情况下发送消息怎么办?
      【解决方案3】:

      改变

      var webSocket = new io.Socket('ws//push.xxx.binder.test', {
      

      var webSocket = new io.Socket('push.xxx.binder.test', {
      

      您无需为您的域添加 socket.io 的前缀(尤其是斜杠前没有冒号)。 var webSocket 也不是很好的命名 - socket.io 不仅可以使用 websockets(即使在你的错误中它使用 xhr-poliing

      【讨论】:

        猜你喜欢
        • 2014-04-07
        • 1970-01-01
        • 2016-08-18
        • 2014-02-13
        • 2014-07-05
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多