繁体   English   中英

从Meteor.js打开Websocket连接

[英]Open a Websocket connection from Meteor.js

我们如何从Meteor打开Websockets连接?

我们可以做类似的事情吗?

ws = new WebSocket('ws://localhost/path');
ws.on('open', function() {
    ws.send('something');
});
ws.on('message', function(message) {
    console.log('received: %s', message);
});

错误:ReferenceError:未定义WebSocket


使用socket.io npm包

var io = Meteor.require('socket.io')
var socket = io.connect('http://localhost');

错误:TypeError:对象#没有方法“连接”


使用ws npm软件包

var WebSocket = Meteor.require('ws');
var ws = new WebSocket('ws://localhost');

错误:错误:找不到模块“ ../build/default/bufferutil”

我创建了一个新的Meteor包joncursi:socket-io-client来解决此问题。 请参阅https://atmospherejs.com/joncursi/socket-io-client了解更多详细信息和示例用法。 由于我已经为您捆绑了NPM二进制文件,因此您不必担心安装NPM软件包,声明NPM.require()依赖项等。最重要的是,您可以部署到.meteor.com而无需顺利。

有一个名为Meteor Streams的软件包,可以使用现有的meteor websocket连接到本地服务器,使您执行类似的操作:

chatStream = new Meteor.Stream('chat');

if(Meteor.isClient) {
  sendChat = function(message) {
    chatStream.emit('message', message);
    console.log('me: ' + message);
  };

  chatStream.on('message', function(message) {
    console.log('user: ' + message);
  });
}

我不确定您要连接到另一台服务器还是本地服务器,如果可以连接到另一台服务器,则可以使用您提供的示例。 我建议在客户端不允许使用websocket的情况下使用其他类似SockJS或socket.io的东西(因此需要websocket仿真)。

根据这个涉及openshift博客帖子的问题的答案,您的答案是:(问题: 如何为客户端设置Meteor WebSocket端口?

我为此苦了一段时间,尝试了不同的方法。 在OpenShift中对我有用的解决方案是:

设置DDP_DEFAULT_CONNECTION_URL变量

 //for http process.env.DDP_DEFAULT_CONNECTION_URL = 'http://' + process.env.OPENSHIFT_APP_DNS + ':8000' //for ssl process.env.DDP_DEFAULT_CONNECTION_URL = 'https://' + process.env.OPENSHIFT_APP_DNS + ':8443' 

根据此博客文章: https : //www.openshift.com/blogs/paas-websockets

您可以尝试这里是解决方案: https : //github.com/Akryum/meteor-socket-io

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM