从Meteor.js打开一个Websocket连接

我们如何从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 is not defined


使用socket.io npm包

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

错误: TypeError: Object #<Object> has no method 'connect'


使用ws npm软件包

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

错误: Error: Cannot find module '../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

链接地址: http://www.djcxy.com/p/77307.html

上一篇: Open a Websocket connection from Meteor.js

下一篇: How to dynamicly generate secret tokens in Rails 4.1 with secrets.yml?