app.js 没有修改。

部署到了这里:http://aaaaa.avosapps.com 可以测试一下(请尽快测试,之后可能会被覆盖测试其他的代码)

我的有修改,我不是用控制台创建的项目,所以有可能有不同,麻烦贴下出来吧,我对比一下,找一下原因

推到 GitHub 上了:https://github.com/aisk/node-js-getting-started/tree/socket-io-demo

注意是 socket-io-demo 这个分支。

@zengshi @Felbry @zmwl

我测试了一下你的demo,连接还没有成功就会被关闭掉,不知道什么原因,连接本地的就没有问题,我用的是 cocos2dx 的 socket.io 的库

那浏览器中的 socket.io 可以正常使用吗?

我刚才改了一下代码,打开上面的测试页面,在浏览器控制台输入

socket.emit('foo', 'hello',function(msg) {console.log(msg)})

应该会打印 'hello' 的,您可以试一下看看能否正常使用。

浏览器中可以使用,客户端就有问题,唉

那看来是 cocos2dx 的 socket.io 库的相关问题,可以尝试搜索一下网上有没有相关的问题。

连接本地的 LeanCloud 的项目是没有问题的。所以估计是线上的 LeanCloud 施展了什么魔法.

线上会经过 nginx 做 proxy,没有其他的魔法操作了。

那应该就是某项nginx的配置的问题了

您好,我对 cocos2dx 不是很熟悉,不过能不能发一个能跑起来的最小化实例代码,我尝试运行一下看看有什么问题?

请问如何使用java在LeanEngine上实现一个websocket?

您好,暂时没有 demo,我们尽快增加。不过在 LeanEngine 上用 Java 实现 websocket 和在其他环境实现 websocket 没有什么特别的不同,可以参考一些网上的 Java websocket 教程。

参考 https://tyrus.java.net/documentation/1.13/index/2 这里,用java实现了一个websocket,在本地可以运行,但是部署到LeanEngine后不能正常访问,代码和相关访问方法如下:

public class MyAppConfig implements ServerApplicationConfig {

    @Override
public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> set) {
    return null;
}

@Override
public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> set) {
    Set<Class<?>> s = new HashSet<>();
    s.add(EventSocket.class);
    return s;
}
}

@ClientEndpoint
@ServerEndpoint(value="/echo/")
public class EventSocket
{
    Session session;
    @OnOpen
    public void onWebSocketConnect(Session sess)
    {
        System.out.println("Socket Connected: " + sess);
        session = sess;
    }
    
    @OnMessage
    public void onWebSocketText(String message) throws IOException {
        System.out.println("Received TEXT message: " + message);
        session.getBasicRemote().sendText(message);
    }
    
    @OnClose
    public void onWebSocketClose(CloseReason reason)
    {
        System.out.println("Socket Closed: " + reason);
    }
    
    @OnError
    public void onWebSocketError(Throwable cause)
    {
        cause.printStackTrace(System.err);
    }
}

使用微信小程序提供的接口访问:

 wx.connectSocket({
            url: 'ws://leancloud.cn/echo/',
             header: {
                'Content-Type': 'application/json',
                'X-LC-Id': 'xxx',
                'X-LC-Key': 'xxx',
                'X-LC-Prod': 1,
            },
            method:'POST',
            success: function () {
                console.log("ws_open success")
            },
            fail: function () {
                console.log("ws_open fail")
            }
        });

返回错误:

访问时将leancloud.cn换成自己的二级域名就可以了? smile

是需要使用自己绑定的二级域名(或者自定义域名)才可以访问。现在已经可以了?感谢提供参考!

这段代码,能够正常部署,但用wscat来测试,超时连不上。我复制了你github上app和server文件,也是这样。。。

请问后来解决了吗?我也无法用socket.io